{"$schema":"https://json.schemastore.org/sarif-2.1.0.json","version":"2.1.0","runs":[{"tool":{"driver":{"name":"codehealth","informationUri":"https://codehealth.canine.dev","rules":[{"id":"D1","name":"Cyclomatic Complexity","shortDescription":{"text":"Cyclomatic Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D1"},{"id":"D2","name":"Cognitive Complexity","shortDescription":{"text":"Cognitive Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D2"},{"id":"D3","name":"God Classes","shortDescription":{"text":"God Classes"},"helpUri":"https://codehealth.canine.dev/dimensions/D3"},{"id":"D4","name":"Code Duplication","shortDescription":{"text":"Code Duplication"},"helpUri":"https://codehealth.canine.dev/dimensions/D4"},{"id":"D5","name":"Coupling","shortDescription":{"text":"Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D5"},{"id":"D6","name":"Cohesion (LCOM4)","shortDescription":{"text":"Cohesion (LCOM4)"},"helpUri":"https://codehealth.canine.dev/dimensions/D6"},{"id":"D8","name":"Code Coverage","shortDescription":{"text":"Code Coverage"},"helpUri":"https://codehealth.canine.dev/dimensions/D8"},{"id":"D13","name":"Secret Scanning","shortDescription":{"text":"Secret Scanning"},"helpUri":"https://codehealth.canine.dev/dimensions/D13","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"],"owasp":"A07:2025"}},{"id":"D14","name":"License Compliance","shortDescription":{"text":"License Compliance"},"helpUri":"https://codehealth.canine.dev/dimensions/D14"},{"id":"D15","name":"Churn \u00D7 Complexity Hotspots","shortDescription":{"text":"Churn \u00D7 Complexity Hotspots"},"helpUri":"https://codehealth.canine.dev/dimensions/D15"},{"id":"D17","name":"Explicit Debt","shortDescription":{"text":"Explicit Debt"},"helpUri":"https://codehealth.canine.dev/dimensions/D17"},{"id":"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":"D21","name":"Naming Consistency","shortDescription":{"text":"Naming Consistency"},"helpUri":"https://codehealth.canine.dev/dimensions/D21"},{"id":"D23","name":"Boundary Type-Coupling","shortDescription":{"text":"Boundary Type-Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D23"},{"id":"D24","name":"Comment Value","shortDescription":{"text":"Comment Value"},"helpUri":"https://codehealth.canine.dev/dimensions/D24"},{"id":"D26","name":"Project Cohesion","shortDescription":{"text":"Project Cohesion"},"helpUri":"https://codehealth.canine.dev/dimensions/D26"},{"id":"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"]},{"target":{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"],"owasp":"A07:2025"}},{"id":"D29","name":"Static Analysis (SAST)","shortDescription":{"text":"Static Analysis (SAST)"},"helpUri":"https://codehealth.canine.dev/dimensions/D29","relationships":[{"target":{"id":"CWE-79","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-94","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-77","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"A05:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-79","CWE-89","CWE-78","CWE-94","CWE-77"],"owasp":"A05:2025"}},{"id":"D30","name":"Dependency Vulnerabilities","shortDescription":{"text":"Dependency Vulnerabilities"},"helpUri":"https://codehealth.canine.dev/dimensions/D30","relationships":[{"target":{"id":"CWE-1395","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-937","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1395","CWE-937"],"owasp":"A03:2025"}},{"id":"D35","name":"Change Coupling","shortDescription":{"text":"Change Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D35"},{"id":"D39","name":"IL Efficiency","shortDescription":{"text":"IL Efficiency"},"helpUri":"https://codehealth.canine.dev/dimensions/D39"},{"id":"D43","name":"Malicious Dependencies","shortDescription":{"text":"Malicious Dependencies"},"helpUri":"https://codehealth.canine.dev/dimensions/D43","relationships":[{"target":{"id":"CWE-506","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"A08:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-506"],"owasp":"A08:2025"}},{"id":"AX10","name":"Code composition","shortDescription":{"text":"Code composition"},"helpUri":"https://codehealth.canine.dev/dimensions/AX10"},{"id":"AX3","name":"Project dependency cycles","shortDescription":{"text":"Project dependency cycles"},"helpUri":"https://codehealth.canine.dev/dimensions/AX3"},{"id":"AX4","name":"Dependency direction","shortDescription":{"text":"Dependency direction"},"helpUri":"https://codehealth.canine.dev/dimensions/AX4"},{"id":"AX5","name":"Architecture \u0026 structure","shortDescription":{"text":"Architecture \u0026 structure"},"helpUri":"https://codehealth.canine.dev/dimensions/AX5"},{"id":"ED5","name":"Idempotency","shortDescription":{"text":"Idempotency"},"helpUri":"https://codehealth.canine.dev/dimensions/ED5"},{"id":"GD1","name":"Unfinished \u0026 placeholder code","shortDescription":{"text":"Unfinished \u0026 placeholder code"},"helpUri":"https://codehealth.canine.dev/dimensions/GD1"},{"id":"IC1","name":"Incompleteness \u0026 stubs","shortDescription":{"text":"Incompleteness \u0026 stubs"},"helpUri":"https://codehealth.canine.dev/dimensions/IC1"},{"id":"M1","name":"Documentation (README)","shortDescription":{"text":"Documentation (README)"},"helpUri":"https://codehealth.canine.dev/dimensions/M1"},{"id":"M2","name":"Architecture documentation","shortDescription":{"text":"Architecture documentation"},"helpUri":"https://codehealth.canine.dev/dimensions/M2"},{"id":"M3","name":"Folder \u0026 project structure","shortDescription":{"text":"Folder \u0026 project structure"},"helpUri":"https://codehealth.canine.dev/dimensions/M3"},{"id":"M4","name":"Documentation accuracy","shortDescription":{"text":"Documentation accuracy"},"helpUri":"https://codehealth.canine.dev/dimensions/M4"},{"id":"P1","name":"CI/CD gates","shortDescription":{"text":"CI/CD gates"},"helpUri":"https://codehealth.canine.dev/dimensions/P1"},{"id":"P3","name":"Security \u0026 performance tooling","shortDescription":{"text":"Security \u0026 performance tooling"},"helpUri":"https://codehealth.canine.dev/dimensions/P3"},{"id":"P6","name":"Release Hygiene","shortDescription":{"text":"Release Hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/P6"},{"id":"SC1","name":"Supply-chain hygiene","shortDescription":{"text":"Supply-chain hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/SC1"},{"id":"X1","name":"Async correctness","shortDescription":{"text":"Async correctness"},"helpUri":"https://codehealth.canine.dev/dimensions/X1"},{"id":"X10","name":"Duplicated predicate","shortDescription":{"text":"Duplicated predicate"},"helpUri":"https://codehealth.canine.dev/dimensions/X10"},{"id":"X12","name":"Unreachable branch","shortDescription":{"text":"Unreachable branch"},"helpUri":"https://codehealth.canine.dev/dimensions/X12"},{"id":"X13","name":"Undrained process stream","shortDescription":{"text":"Undrained process stream"},"helpUri":"https://codehealth.canine.dev/dimensions/X13"},{"id":"X14","name":"Bypassable address classification","shortDescription":{"text":"Bypassable address classification"},"helpUri":"https://codehealth.canine.dev/dimensions/X14"},{"id":"X15","name":"Unvalidated length from an untrusted reader","shortDescription":{"text":"Unvalidated length from an untrusted reader"},"helpUri":"https://codehealth.canine.dev/dimensions/X15"},{"id":"X16","name":"Unfloored truncation loop","shortDescription":{"text":"Unfloored truncation loop"},"helpUri":"https://codehealth.canine.dev/dimensions/X16"},{"id":"X17","name":"Uncapped recursion over a caller-supplied document","shortDescription":{"text":"Uncapped recursion over a caller-supplied document"},"helpUri":"https://codehealth.canine.dev/dimensions/X17"},{"id":"X18","name":"Disposal-pattern correctness","shortDescription":{"text":"Disposal-pattern correctness"},"helpUri":"https://codehealth.canine.dev/dimensions/X18"},{"id":"X19","name":"Unrestored process-global state","shortDescription":{"text":"Unrestored process-global state"},"helpUri":"https://codehealth.canine.dev/dimensions/X19"},{"id":"X20","name":"Mistyped argument guard","shortDescription":{"text":"Mistyped argument guard"},"helpUri":"https://codehealth.canine.dev/dimensions/X20"},{"id":"X21","name":"Side-effecting pattern guard","shortDescription":{"text":"Side-effecting pattern guard"},"helpUri":"https://codehealth.canine.dev/dimensions/X21"},{"id":"X22","name":"Contradicted release guard","shortDescription":{"text":"Contradicted release guard"},"helpUri":"https://codehealth.canine.dev/dimensions/X22"},{"id":"X23","name":"Unguarded diagnostic materialisation","shortDescription":{"text":"Unguarded diagnostic materialisation"},"helpUri":"https://codehealth.canine.dev/dimensions/X23"},{"id":"X24","name":"Document value interpolated into markup unescaped","shortDescription":{"text":"Document value interpolated into markup unescaped"},"helpUri":"https://codehealth.canine.dev/dimensions/X24"},{"id":"X25","name":"Inert configuration knob","shortDescription":{"text":"Inert configuration knob"},"helpUri":"https://codehealth.canine.dev/dimensions/X25"},{"id":"X26","name":"Unsynchronised callback handoff","shortDescription":{"text":"Unsynchronised callback handoff"},"helpUri":"https://codehealth.canine.dev/dimensions/X26"},{"id":"X27","name":"Collection changed while being enumerated","shortDescription":{"text":"Collection changed while being enumerated"},"helpUri":"https://codehealth.canine.dev/dimensions/X27"},{"id":"X28","name":"Index access outside its own emptiness guard","shortDescription":{"text":"Index access outside its own emptiness guard"},"helpUri":"https://codehealth.canine.dev/dimensions/X28"},{"id":"X29","name":"Per-element action decided by a fixed element","shortDescription":{"text":"Per-element action decided by a fixed element"},"helpUri":"https://codehealth.canine.dev/dimensions/X29"},{"id":"X3","name":"Exception handling","shortDescription":{"text":"Exception handling"},"helpUri":"https://codehealth.canine.dev/dimensions/X3"},{"id":"X30","name":"Support guard that admits what it rejects","shortDescription":{"text":"Support guard that admits what it rejects"},"helpUri":"https://codehealth.canine.dev/dimensions/X30"},{"id":"X32","name":"Type resolved by simple name across every loaded assembly","shortDescription":{"text":"Type resolved by simple name across every loaded assembly"},"helpUri":"https://codehealth.canine.dev/dimensions/X32"},{"id":"X4","name":"Structured logging","shortDescription":{"text":"Structured logging"},"helpUri":"https://codehealth.canine.dev/dimensions/X4"},{"id":"X6","name":"Hand-rolled structured-format parsing","shortDescription":{"text":"Hand-rolled structured-format parsing"},"helpUri":"https://codehealth.canine.dev/dimensions/X6"},{"id":"X7","name":"Silent fallback defaults","shortDescription":{"text":"Silent fallback defaults"},"helpUri":"https://codehealth.canine.dev/dimensions/X7"},{"id":"X9","name":"Subsumed condition operand","shortDescription":{"text":"Subsumed condition operand"},"helpUri":"https://codehealth.canine.dev/dimensions/X9"}]}},"results":[{"ruleId":"D1","level":"warning","message":{"text":"clsRvtCategoryData.GetAllPropertyValues (cyclomatic 91): clsRvtCategoryData.GetAllPropertyValues has cyclomatic complexity 91 (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":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"60c7b344fc8ba1ed5044f7e193bc0568ff7f6b11a4adaae4a2884e50c13af2b4"}},{"ruleId":"D1","level":"warning","message":{"text":"clsRvtCategoryData.GetAllPropertyValues (cyclomatic 91): clsRvtCategoryData.GetAllPropertyValues has cyclomatic complexity 91 (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":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"074a99fb4aabc49e1046c1610cfbd450a244d197895722bf78efa4b6de506da5"}},{"ruleId":"D1","level":"warning","message":{"text":"clsRvtCategoryData.GetAllPropertyValues (cyclomatic 91): clsRvtCategoryData.GetAllPropertyValues has cyclomatic complexity 91 (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":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"80b72e5cc49d213ae9110255390cca60d392c0627df24ac3803b0deb63eeb403"}},{"ruleId":"D1","level":"warning","message":{"text":"clsRvtCategoryData.GetAllPropertyValues (cyclomatic 91): clsRvtCategoryData.GetAllPropertyValues has cyclomatic complexity 91 (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":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bdc03f520ea3c883ebab7e1b86cedfb0107fdbc27411455366e7901426910c6"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.ScanCategories (cyclomatic 58): clsSettings.ScanCategories has cyclomatic complexity 58 (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":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"65b0c2046f30d034205cd707dd064abdb59162f417c166d6a43b85a398dde61f"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.ScanCategories (cyclomatic 58): clsSettings.ScanCategories has cyclomatic complexity 58 (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":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"615d93518314699fb102af5c9c3548a169f539b69ee9ab7db0ecb58af2f2c253"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.ScanCategories (cyclomatic 58): clsSettings.ScanCategories has cyclomatic complexity 58 (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":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"8161ea1ea78c5339fbdecd9d1b7ca1a3a394130426df52376a7a6c1df6886ad5"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.ScanCategories (cyclomatic 58): clsSettings.ScanCategories has cyclomatic complexity 58 (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":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"468c1636982a502a75feff50cb64950e80b11ede0b8af0db85243a3b5a38b080"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.GetSymbolNames (cyclomatic 50): clsSettings.GetSymbolNames has cyclomatic complexity 50 (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":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e5e147c12fa9e088ff86aad1b9469c43c60b5c4be98c40aa83a6753b4d24427"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.GetSymbolNames (cyclomatic 50): clsSettings.GetSymbolNames has cyclomatic complexity 50 (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":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"6091940664450588f75545448af69a55fd8cd43e0c6a6856dec6bc2d3fedbe00"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.GetSymbolNames (cyclomatic 50): clsSettings.GetSymbolNames has cyclomatic complexity 50 (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":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"7064bea53745159cb300c1db93cdf0eeb95426fefbf8b375d2ffa34335ec7ed2"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.GetSymbolNames (cyclomatic 50): clsSettings.GetSymbolNames has cyclomatic complexity 50 (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":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"85884bc60e1584102a8a92edb0f6279617cf5638fb0987702167c10e7a817612"}},{"ruleId":"D1","level":"warning","message":{"text":"form_ExportPoints.New.ctor (cyclomatic 47): form_ExportPoints.New.ctor has cyclomatic complexity 47 (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":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"39d91b1d3e88035cc85914f19c8f6166088d595fed133be7215bc7ab8b34b3a1"}},{"ruleId":"D1","level":"warning","message":{"text":"form_ExportPoints.New.ctor (cyclomatic 47): form_ExportPoints.New.ctor has cyclomatic complexity 47 (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":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9a50500ffeef88f1060a1264b61c78fa9ed8f4cbb4dbc4101a4e5c6de9d1cf4"}},{"ruleId":"D1","level":"warning","message":{"text":"form_ExportPoints.New.ctor (cyclomatic 47): form_ExportPoints.New.ctor has cyclomatic complexity 47 (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":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2b441a0b44e3f75358ff8a282808be264d70657af1d60e222e0ea4f55704ac0"}},{"ruleId":"D1","level":"warning","message":{"text":"form_ExportPoints.New.ctor (cyclomatic 47): form_ExportPoints.New.ctor has cyclomatic complexity 47 (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":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"9416db1c619e40fe5ead20b4e2f870f430b83bbb15f610af660950b3f6421868"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Sync.UpdateElementData (cyclomatic 46): form_Sync.UpdateElementData has cyclomatic complexity 46 (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":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"836d2b89b1578cd4dbe9b508a5de85f87fae4ed22d6edb4fd147942873dbc7c1"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Sync.UpdateElementData (cyclomatic 46): form_Sync.UpdateElementData has cyclomatic complexity 46 (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":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"4147bccfb075ea0d8a6b8f82bd9077b148a97690afffac7ca854e69d63147a63"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Sync.UpdateElementData (cyclomatic 46): form_Sync.UpdateElementData has cyclomatic complexity 46 (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":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"4761718e45b030c6fd8312603eaa23470ea687116121317fe9aab0f96c49d587"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Sync.UpdateElementData (cyclomatic 46): form_Sync.UpdateElementData has cyclomatic complexity 46 (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":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7429ee5f0d3b04728314570c84363b8abaa9dacb5193d1998b3103fe44c5b33"}},{"ruleId":"D1","level":"warning","message":{"text":"form_RoomMasses.GenerateMasses (cyclomatic 45): form_RoomMasses.GenerateMasses has cyclomatic complexity 45 (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":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"314687f92fd08adbbb159f1839ae5d007d581d4902bd9a98013dd666df1a9e11"}},{"ruleId":"D1","level":"warning","message":{"text":"form_RoomMasses.GenerateMasses (cyclomatic 45): form_RoomMasses.GenerateMasses has cyclomatic complexity 45 (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":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"84f99bb2040825d62d6159c2047714f383c5adf1a1f9f291034d48a753ef9738"}},{"ruleId":"D1","level":"warning","message":{"text":"form_RoomMasses.GenerateMasses (cyclomatic 45): form_RoomMasses.GenerateMasses has cyclomatic complexity 45 (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":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"00a2c4536d51b6e1c190cefb558f2409012f50db4ca220a3c7855fd4919531de"}},{"ruleId":"D1","level":"warning","message":{"text":"form_RoomMasses.GenerateMasses (cyclomatic 45): form_RoomMasses.GenerateMasses has cyclomatic complexity 45 (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":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"735b0f3d4c7183a4ce0553858ebedc663b7b5b56dbfb8b2dc0a37a4e31065dd5"}},{"ruleId":"D1","level":"warning","message":{"text":"clsONSort.SortObjects (cyclomatic 44): clsONSort.SortObjects has cyclomatic complexity 44 (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":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONSort.vb"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9da88fe134068ec3c320059630a765dd10d75c75e02a74eda4a160cf8161304"}},{"ruleId":"D1","level":"warning","message":{"text":"clsONSort.SortObjects (cyclomatic 44): clsONSort.SortObjects has cyclomatic complexity 44 (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":"2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONSort.vb"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"46188aebbe228d51e14ba16dafd53e52be32ac80e40b416584bae6d1d099d26e"}},{"ruleId":"D1","level":"warning","message":{"text":"clsONSort.SortObjects (cyclomatic 44): clsONSort.SortObjects has cyclomatic complexity 44 (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":"2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONSort.vb"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"b94ffd305eebf8ba6d4a0651a2c74a0cc8615bc1aa6891cd4fcd6c43b1d04d02"}},{"ruleId":"D1","level":"warning","message":{"text":"clsONSort.SortObjects (cyclomatic 44): clsONSort.SortObjects has cyclomatic complexity 44 (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":"2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONSort.vb"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"43e417fe70e2f63776b290fc09d65fd56665be81760af43fbbf654190a9ea5d4"}},{"ruleId":"D1","level":"warning","message":{"text":"Form_Main.TagElementsInViews (cyclomatic 40): Form_Main.TagElementsInViews has cyclomatic complexity 40 (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":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4bf34e191f67b5f8beda9a52ae667797cfac5bc145446eac4957fbeaf8edff4"}},{"ruleId":"D1","level":"warning","message":{"text":"Form_Main.TagElementsInViews (cyclomatic 40): Form_Main.TagElementsInViews has cyclomatic complexity 40 (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":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"7350d048dfbc86b431868994c7de718ea5f0ae676edb44cc67a220cabab131f8"}},{"ruleId":"D1","level":"warning","message":{"text":"Form_Main.TagElementsInViews (cyclomatic 40): Form_Main.TagElementsInViews has cyclomatic complexity 40 (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":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f9e817b768e649e7f62edda213571cb2314f7435c310ce6613a6480f3bd1c08"}},{"ruleId":"D1","level":"warning","message":{"text":"Form_Main.TagElementsInViews (cyclomatic 40): Form_Main.TagElementsInViews has cyclomatic complexity 40 (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":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"df1b5504a7d515c4b95eee12ac4d803e0eedace93093bcf382ebdb29f5541ad2"}},{"ruleId":"D1","level":"warning","message":{"text":"clsReportingData.New.ctor (cyclomatic 37): clsReportingData.New.ctor has cyclomatic complexity 37 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"35661fb2f622ed32a3056b302e52c6a4045833f6af6bb775f4ad867d7c698869"}},{"ruleId":"D1","level":"warning","message":{"text":"clsReportingData.New.ctor (cyclomatic 37): clsReportingData.New.ctor has cyclomatic complexity 37 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed241928af95f8e2fcdb6c1e2e69a6ecd85255c0659ffe6e0544080ea6d3242a"}},{"ruleId":"D1","level":"warning","message":{"text":"clsReportingData.New.ctor (cyclomatic 37): clsReportingData.New.ctor has cyclomatic complexity 37 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"d61b8a622f965df2bf1a693bdfb4acae7a5618c1b265c1f98ec15638b932dae9"}},{"ruleId":"D1","level":"warning","message":{"text":"clsReportingData.New.ctor (cyclomatic 37): clsReportingData.New.ctor has cyclomatic complexity 37 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"046373c581f2edbf9538fe871c7939dd8fa8cbed486928f8dae157e7fb4fdb6d"}},{"ruleId":"D1","level":"warning","message":{"text":"MultiSelectTreeview.OnKeyDown (cyclomatic 36): MultiSelectTreeview.OnKeyDown has cyclomatic complexity 36 (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":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f4b79048bf2094aa537cdfc3255a1ecec5ec657a5eef61ca8bae1743397cfcf"}},{"ruleId":"D1","level":"warning","message":{"text":"MultiSelectTreeview.OnKeyDown (cyclomatic 36): MultiSelectTreeview.OnKeyDown has cyclomatic complexity 36 (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":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bf9367035c17e96a54541930350f6237b21b247b6dbf4fe8aec42e7a3beac91"}},{"ruleId":"D1","level":"warning","message":{"text":"MultiSelectTreeview.OnKeyDown (cyclomatic 36): MultiSelectTreeview.OnKeyDown has cyclomatic complexity 36 (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":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"55be00394a3395e439179816f90a971f54033cfcb88747651e65c97c8f77e3c7"}},{"ruleId":"D1","level":"warning","message":{"text":"MultiSelectTreeview.OnKeyDown (cyclomatic 36): MultiSelectTreeview.OnKeyDown has cyclomatic complexity 36 (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":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"527778e9c260bb0fa0335665c62e12844e9188a4e4113d72b7c47859e76ff196"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Sync.SyncRooms (cyclomatic 35): form_Sync.SyncRooms has cyclomatic complexity 35 (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":"2015/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b37438bd135da5d795e831d4c4d15f35d7966d427fe5783b2c8327e53d492e9"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Sync.SyncRooms (cyclomatic 35): form_Sync.SyncRooms has cyclomatic complexity 35 (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":"2016/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"036861f7c2ce7ac5f608310e308d899126c603365c9eb812e4a77f5d62e0f5ae"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Sync.SyncRooms (cyclomatic 35): form_Sync.SyncRooms has cyclomatic complexity 35 (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":"2017/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cff5cdaf48eda6dcd7295aeadc903f6b5a7a9fd7b9abc67cda135343282ad31"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Sync.SyncRooms (cyclomatic 35): form_Sync.SyncRooms has cyclomatic complexity 35 (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":"2018/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"7abc16672a4a0e41812fc53a27c56fba6cdf2b2808137a3e77e971d8ccee3b7c"}},{"ruleId":"D1","level":"warning","message":{"text":"clsExcel.UpdateWorksheetFromArray (cyclomatic 33): clsExcel.UpdateWorksheetFromArray has cyclomatic complexity 33 (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":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":704}}}],"partialFingerprints":{"codehealthFindingId/v1":"191e7a2fa5d89ade3cef0b3ead4919984fcd10e5d2832e55bcce7a72cd2d9835"}},{"ruleId":"D1","level":"warning","message":{"text":"clsExcel.UpdateWorksheetFromArray (cyclomatic 33): clsExcel.UpdateWorksheetFromArray has cyclomatic complexity 33 (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":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":704}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3efb93166b6dda268e3cb98725f2070277419ce37324e1e030064987d7be802"}},{"ruleId":"D1","level":"warning","message":{"text":"clsExcel.UpdateWorksheetFromArray (cyclomatic 33): clsExcel.UpdateWorksheetFromArray has cyclomatic complexity 33 (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":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":704}}}],"partialFingerprints":{"codehealthFindingId/v1":"e71b3c01919842546a294121cd986f278e134899d1e2b2f6b089d90f6adbcd57"}},{"ruleId":"D1","level":"warning","message":{"text":"clsExcel.UpdateWorksheetFromArray (cyclomatic 33): clsExcel.UpdateWorksheetFromArray has cyclomatic complexity 33 (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":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":704}}}],"partialFingerprints":{"codehealthFindingId/v1":"8000be276441f569db64efe12e0eb058426da4098acad124617987e8f9cb3e12"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.UpdateElementValues (cyclomatic 32): clsSettings.UpdateElementValues has cyclomatic complexity 32 (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":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":738}}}],"partialFingerprints":{"codehealthFindingId/v1":"beea5b66fa4845d6ddc29e76f46df4e50d3fa0f5fa023e559027a99c7adc5e45"}},{"ruleId":"D1","level":"warning","message":{"text":"form_PlacePointsFromFile.PlacePoints (cyclomatic 32): form_PlacePointsFromFile.PlacePoints has cyclomatic complexity 32 (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":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"f02dc216bd34010acb7fd20ed096034111a7ee5038630c4c9e7b4812e4ef8a32"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.CalculatePoints (cyclomatic 32): form_Main.CalculatePoints has cyclomatic complexity 32 (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":"2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"8df1d0654482f6114fceebeeaa567c27b4e2f82f690ba17187df132ccf4bd71c"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.UpdateElementValues (cyclomatic 32): clsSettings.UpdateElementValues has cyclomatic complexity 32 (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":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":738}}}],"partialFingerprints":{"codehealthFindingId/v1":"f28604fe93c942a2e00b743cb8ef0ee5ed4e34d7d941ed62fb22308398112e01"}},{"ruleId":"D1","level":"warning","message":{"text":"form_PlacePointsFromFile.PlacePoints (cyclomatic 32): form_PlacePointsFromFile.PlacePoints has cyclomatic complexity 32 (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":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"1aafcbe080a9dc12a34f6c93a66a8ad5c073dd7b8ca4939e0a6dfb4f71900777"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.CalculatePoints (cyclomatic 32): form_Main.CalculatePoints has cyclomatic complexity 32 (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":"2016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"73d7582dcd9ae7e4bb82adce754ebbeac24b1abf7453dfd820660d8943f49ae3"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.UpdateElementValues (cyclomatic 32): clsSettings.UpdateElementValues has cyclomatic complexity 32 (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":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":738}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc9a3f12ff986562a7aa3e6021652ce545da18dd9f68fa81167099e642a76996"}},{"ruleId":"D1","level":"warning","message":{"text":"form_PlacePointsFromFile.PlacePoints (cyclomatic 32): form_PlacePointsFromFile.PlacePoints has cyclomatic complexity 32 (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":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e3f25de9666e179808896f3c9db7135efb5966c5cadd1465f53b85bd524afbc"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.CalculatePoints (cyclomatic 32): form_Main.CalculatePoints has cyclomatic complexity 32 (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":"2017/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"d27df14d465eb30df692081dcddb6430c9637209eab7e1121b81a55ddac9cff6"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.UpdateElementValues (cyclomatic 32): clsSettings.UpdateElementValues has cyclomatic complexity 32 (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":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":738}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b78d974db72cd5052b744970c17ba78db88026ba5533f84c45b1c6f0ce7b104"}},{"ruleId":"D1","level":"warning","message":{"text":"form_PlacePointsFromFile.PlacePoints (cyclomatic 32): form_PlacePointsFromFile.PlacePoints has cyclomatic complexity 32 (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":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"fac0d21017ab659a243da0313e3780b6c30f6c0596829db758476b445937617b"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.CalculatePoints (cyclomatic 32): form_Main.CalculatePoints has cyclomatic complexity 32 (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":"2018/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"78ae6aaf75726b10a9f7d019ca39f898c0e7002d8f6afd8e6e1526c4618840c0"}},{"ruleId":"D1","level":"warning","message":{"text":"AppMain.LoadItemsOne (cyclomatic 31): AppMain.LoadItemsOne has cyclomatic complexity 31 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon/Entry/AppMain.vb"},"region":{"startLine":592}}}],"partialFingerprints":{"codehealthFindingId/v1":"35505b49471fece01ecbfc80715c61ed787c5e2ef31b31a88bcd561cb400d380"}},{"ruleId":"D1","level":"warning","message":{"text":"AppMain.LoadItemsOne (cyclomatic 31): AppMain.LoadItemsOne has cyclomatic complexity 31 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2017/Entry/AppMain.vb"},"region":{"startLine":592}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6b964da7b2cb982494063462847015d817d2a5fe37397830eabf4c423100fbc"}},{"ruleId":"D1","level":"warning","message":{"text":"AppMain.LoadItemsOne (cyclomatic 31): AppMain.LoadItemsOne has cyclomatic complexity 31 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2018/Entry/AppMain.vb"},"region":{"startLine":592}}}],"partialFingerprints":{"codehealthFindingId/v1":"78f2a80300e3291ffd97675654c8e58c57fe2b25d366e98608d92b5fbdd60fd6"}},{"ruleId":"D1","level":"warning","message":{"text":"Form_Main.UpdateFamiliesList (cyclomatic 30): Form_Main.UpdateFamiliesList has cyclomatic complexity 30 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba0ca18ecb75298702b2af5cdace3ea80a1e60a7177e0762925d2b7a9508b86d"}},{"ruleId":"D1","level":"warning","message":{"text":"clsExcel.FillExcelWorksheetFromDataTable (cyclomatic 30): clsExcel.FillExcelWorksheetFromDataTable has cyclomatic complexity 30 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"b392ac6574f910ae79bdea84aa69a30035fd33f1f71e168e96be628bbee431c3"}},{"ruleId":"D1","level":"warning","message":{"text":"clsReportingData.New.ctor (cyclomatic 30): clsReportingData.New.ctor has cyclomatic complexity 30 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdda353ff9f1fcdb7694f0fae6121dd0c8810644eec06d733007cde7fa594dc1"}},{"ruleId":"D1","level":"warning","message":{"text":"form_DataManager.UpdatePoints (cyclomatic 30): form_DataManager.UpdatePoints has cyclomatic complexity 30 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e593c2111dbe022a5541a95f2e3700068a5c26a425ebd277002b2d6ff68aa72"}},{"ruleId":"D1","level":"warning","message":{"text":"Form_Main.UpdateFamiliesList (cyclomatic 30): Form_Main.UpdateFamiliesList has cyclomatic complexity 30 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"f43b3ccc50ed4b9874a4282f7275cd742b92dedebe058d31be7026d010c245ac"}},{"ruleId":"D1","level":"warning","message":{"text":"clsExcel.FillExcelWorksheetFromDataTable (cyclomatic 30): clsExcel.FillExcelWorksheetFromDataTable has cyclomatic complexity 30 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"72957d54b80acee5f175184f95e797af2d39902912c09abd626342a12785cea2"}},{"ruleId":"D1","level":"warning","message":{"text":"clsReportingData.New.ctor (cyclomatic 30): clsReportingData.New.ctor has cyclomatic complexity 30 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"e89c5effc6ac0c2c86cb07f0603b2852566ea0a0f845a372f5bd48f93a64b037"}},{"ruleId":"D1","level":"warning","message":{"text":"form_DataManager.UpdatePoints (cyclomatic 30): form_DataManager.UpdatePoints has cyclomatic complexity 30 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"65998b5cb10a24ddfeb097676edabf75c4495d5d1f889e34fa4100fe058456a8"}},{"ruleId":"D1","level":"warning","message":{"text":"Form_Main.UpdateFamiliesList (cyclomatic 30): Form_Main.UpdateFamiliesList has cyclomatic complexity 30 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1b8bbb88bf7d7c94f7fc4c8644b647661bd39dd5c702949ecdc43ceeb2c63df"}},{"ruleId":"D1","level":"warning","message":{"text":"clsExcel.FillExcelWorksheetFromDataTable (cyclomatic 30): clsExcel.FillExcelWorksheetFromDataTable has cyclomatic complexity 30 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"6967deb3a7b641663c40d3365d9c5f548800d602426fa371d1886e00a957bfd8"}},{"ruleId":"D1","level":"warning","message":{"text":"clsReportingData.New.ctor (cyclomatic 30): clsReportingData.New.ctor has cyclomatic complexity 30 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"e781b91952d273b45876b75f00d8378253d7847fd041f375e36fc06c57efa8c9"}},{"ruleId":"D1","level":"warning","message":{"text":"form_DataManager.UpdatePoints (cyclomatic 30): form_DataManager.UpdatePoints has cyclomatic complexity 30 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"6859e37906ed0d434e485f7ec78fbce079520426191d949062ee43c7c4e5129d"}},{"ruleId":"D1","level":"warning","message":{"text":"Form_Main.UpdateFamiliesList (cyclomatic 30): Form_Main.UpdateFamiliesList has cyclomatic complexity 30 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf92f71eb76f050acaffe2cc8308f53206a1a1356a9cb726428125bac64fe27f"}},{"ruleId":"D1","level":"warning","message":{"text":"clsExcel.FillExcelWorksheetFromDataTable (cyclomatic 30): clsExcel.FillExcelWorksheetFromDataTable has cyclomatic complexity 30 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbad0b1c7e7a1d5a70be09f59d25b32a75338cb3669d9cec8b62625fa128e3d3"}},{"ruleId":"D1","level":"warning","message":{"text":"clsReportingData.New.ctor (cyclomatic 30): clsReportingData.New.ctor has cyclomatic complexity 30 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"aaeb585e4e6a059c97a93a1f841ff536d9303fe6ee8e3fc73108c0f2f0fbd742"}},{"ruleId":"D1","level":"warning","message":{"text":"form_DataManager.UpdatePoints (cyclomatic 30): form_DataManager.UpdatePoints has cyclomatic complexity 30 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"10ea3770af255037e3ea9618487caa4649a1ee309d2ab5e37afd0490976ce77f"}},{"ruleId":"D1","level":"warning","message":{"text":"clsRvtCategoryData.GetPropertyNames (cyclomatic 29): clsRvtCategoryData.GetPropertyNames has cyclomatic complexity 29 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc6a9fb6a9d15bf35b49067b5845f4fbae4f5fe4b533e9d94cb6c2df06529429"}},{"ruleId":"D1","level":"warning","message":{"text":"clsRvtCategoryData.GetPropertyNames (cyclomatic 29): clsRvtCategoryData.GetPropertyNames has cyclomatic complexity 29 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"01371bea30bb382fe81458d87fc5b9f0b643cc751a383f7d68d17ea5dc910442"}},{"ruleId":"D1","level":"warning","message":{"text":"clsRvtCategoryData.GetPropertyNames (cyclomatic 29): clsRvtCategoryData.GetPropertyNames has cyclomatic complexity 29 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"e833e9287e77740fc7c893a14e487b5b397f82d2845efd601f3761ff47a7a1e1"}},{"ruleId":"D1","level":"warning","message":{"text":"clsRvtCategoryData.GetPropertyNames (cyclomatic 29): clsRvtCategoryData.GetPropertyNames has cyclomatic complexity 29 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"03252993765759eba1f4b1d216726bc18034538ef219122a44048f3345d2c647"}},{"ruleId":"D1","level":"warning","message":{"text":"form_RoomMasses.GenerateMasses (cyclomatic 26): form_RoomMasses.GenerateMasses has cyclomatic complexity 26 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"883fb31abb994598141635677943ca365e21943f94b4cab986aff408b990e034"}},{"ruleId":"D1","level":"warning","message":{"text":"form_RoomMasses.GenerateMasses (cyclomatic 26): form_RoomMasses.GenerateMasses has cyclomatic complexity 26 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9cd45b4c289b265b72912132732696020c39b3f432d139a27c2718f9c516071"}},{"ruleId":"D1","level":"warning","message":{"text":"form_RoomMasses.GenerateMasses (cyclomatic 26): form_RoomMasses.GenerateMasses has cyclomatic complexity 26 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"9439ec6a7fbe224e6247c040b4e2d9d60da0403a81ce20e7ebb65363127ffd39"}},{"ruleId":"D1","level":"warning","message":{"text":"form_RoomMasses.GenerateMasses (cyclomatic 26): form_RoomMasses.GenerateMasses has cyclomatic complexity 26 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"c310e5492a70a4ade53abe89deec2cc799b059a426e9b2f6d6cfa6629ffdea1d"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Sync.SyncExcelAndRevit (cyclomatic 25): form_Sync.SyncExcelAndRevit has cyclomatic complexity 25 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fbf9a1fda1f5e2f03ef0c0b5b3e2efdc0519588ede089db01b80cdeaa52a306"}},{"ruleId":"D1","level":"warning","message":{"text":"D9B42C3FEA6F4F9E8E1B62E993AA2512.Execute (cyclomatic 25): D9B42C3FEA6F4F9E8E1B62E993AA2512.Execute has cyclomatic complexity 25 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e7f7f9abdbc4362966bc7cd46b8dccba0a5f17df396dea9dd3d3c886ad42bd5"}},{"ruleId":"D1","level":"warning","message":{"text":"MultiSelectTreeview.SelectNode (cyclomatic 25): MultiSelectTreeview.SelectNode has cyclomatic complexity 25 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ea2ea9e4c151586cf564a5af553dbe720a063198d11cf6a64172832d794bc90"}},{"ruleId":"D1","level":"warning","message":{"text":"clsReportingData.New.ctor (cyclomatic 25): clsReportingData.New.ctor has cyclomatic complexity 25 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"9419305987c532958236368ae9e24412fc235f91b0353fb8b4ddd119d947d1e0"}},{"ruleId":"D1","level":"warning","message":{"text":"form_ExportPoints.LoadPreviewData (cyclomatic 25): form_ExportPoints.LoadPreviewData has cyclomatic complexity 25 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"88773cce6427f3cfe2f78b8b98fd85018bd5269ded88e9212ef4cf3cca9fe7e4"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Sync.SyncExcelAndRevit (cyclomatic 25): form_Sync.SyncExcelAndRevit has cyclomatic complexity 25 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"be983262e5b23929085a60ef65412b0e135cc5ca02d7f86623ab04f09ec036f4"}},{"ruleId":"D1","level":"warning","message":{"text":"D9B42C3FEA6F4F9E8E1B62E993AA2512.Execute (cyclomatic 25): D9B42C3FEA6F4F9E8E1B62E993AA2512.Execute has cyclomatic complexity 25 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9e56001e12e4c9b1e35a4b0071250268c99b2a437c4aeebc6fd0cf08799c425"}},{"ruleId":"D1","level":"warning","message":{"text":"MultiSelectTreeview.SelectNode (cyclomatic 25): MultiSelectTreeview.SelectNode has cyclomatic complexity 25 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"f455234567ff2cea1697375fab9ff7f49049dbd433b725cdd44ca52c5dd8bcfb"}},{"ruleId":"D1","level":"warning","message":{"text":"clsReportingData.New.ctor (cyclomatic 25): clsReportingData.New.ctor has cyclomatic complexity 25 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"af035a210802c99dc2f9bdd799d540d84b2dc8d60bc32b8af64822a026948e3c"}},{"ruleId":"D1","level":"warning","message":{"text":"form_ExportPoints.LoadPreviewData (cyclomatic 25): form_ExportPoints.LoadPreviewData has cyclomatic complexity 25 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0e035afd26c538a9ae76b8715754f17222eb4e23527c66878c27bd6884214e7"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Sync.SyncExcelAndRevit (cyclomatic 25): form_Sync.SyncExcelAndRevit has cyclomatic complexity 25 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ad3e426a65f8e3747ba0978532998576c9a8e05a32c090c1553113c6a267681"}},{"ruleId":"D1","level":"warning","message":{"text":"D9B42C3FEA6F4F9E8E1B62E993AA2512.Execute (cyclomatic 25): D9B42C3FEA6F4F9E8E1B62E993AA2512.Execute has cyclomatic complexity 25 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb1477be9956936cd109dab9b81bab3a992847d632c1feae09b3be3f68924101"}},{"ruleId":"D1","level":"warning","message":{"text":"MultiSelectTreeview.SelectNode (cyclomatic 25): MultiSelectTreeview.SelectNode has cyclomatic complexity 25 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"da549c0b559a0e85e34ce6cdb2da7dc8510dfc6e53b04ed1e1d4c65fc87ae9d2"}},{"ruleId":"D1","level":"warning","message":{"text":"clsReportingData.New.ctor (cyclomatic 25): clsReportingData.New.ctor has cyclomatic complexity 25 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"35dc8e4428d77cfa96f4a3771ff51509f05a8c425c5b7030d774dd00688271ad"}},{"ruleId":"D1","level":"warning","message":{"text":"form_ExportPoints.LoadPreviewData (cyclomatic 25): form_ExportPoints.LoadPreviewData has cyclomatic complexity 25 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"f05216c7b3e3b5de635e86e2c8b9107852e825fd087a193fefd28324392a5069"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Sync.SyncExcelAndRevit (cyclomatic 25): form_Sync.SyncExcelAndRevit has cyclomatic complexity 25 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"3481098030f8f63c49132a8e631be792170f957a0abd856ca222403449663b88"}},{"ruleId":"D1","level":"warning","message":{"text":"D9B42C3FEA6F4F9E8E1B62E993AA2512.Execute (cyclomatic 25): D9B42C3FEA6F4F9E8E1B62E993AA2512.Execute has cyclomatic complexity 25 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"174467e6bb061fea46eedd81529d6cdb61ed0686bb880f5593d32c282695a3e7"}},{"ruleId":"D1","level":"warning","message":{"text":"MultiSelectTreeview.SelectNode (cyclomatic 25): MultiSelectTreeview.SelectNode has cyclomatic complexity 25 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b2090377e95f8c92ed574e60f4a81e270f8f0d639691e6d9510296b103e29d1"}},{"ruleId":"D1","level":"warning","message":{"text":"clsReportingData.New.ctor (cyclomatic 25): clsReportingData.New.ctor has cyclomatic complexity 25 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"f11e56dfcb55264fc76d6b362e39632fbdea7e500a72dfedd791e979e13ab69c"}},{"ruleId":"D1","level":"warning","message":{"text":"form_ExportPoints.LoadPreviewData (cyclomatic 25): form_ExportPoints.LoadPreviewData has cyclomatic complexity 25 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"02ffbbe4f8374462d2697cc37f3e20aaa9c44530b86348bf4ff0bfd3f9353edb"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.form_Main_Shown (cyclomatic 24): form_Main.form_Main_Shown has cyclomatic complexity 24 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e80b7df2070a8aef58860783fe1ae42e5627c04cd9ff5b6f279867575668b87"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.form_Main_Shown (cyclomatic 24): form_Main.form_Main_Shown has cyclomatic complexity 24 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"32081fb6eaaf059adb1489809a72c407eb29d7db8d78f1275d09250ee8b4bb4b"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.form_Main_Shown (cyclomatic 24): form_Main.form_Main_Shown has cyclomatic complexity 24 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"498450c66c5063c32f057bf17b8a68b9434636aaf6e58e20b2daa997006d73b2"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.form_Main_Shown (cyclomatic 24): form_Main.form_Main_Shown has cyclomatic complexity 24 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"e84a9255873ee00862c8036415ef6336917ce79c339de4210cc098779c5a1614"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.doSetup (cyclomatic 23): clsSettings.doSetup has cyclomatic complexity 23 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"2036894f7678e14e43287dd68bff03ad891bbc46addbc043babae3b16696846c"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.doSetup (cyclomatic 23): clsSettings.doSetup has cyclomatic complexity 23 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"60eef6f2a49a6bac15bbf0507e24b1519fca1effca640eeb4749746155b74d39"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.doSetup (cyclomatic 23): clsSettings.doSetup has cyclomatic complexity 23 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"493d0c64243ced57a9b4a7b9e5bffbb69a92eff7352267f431fc14964eda6642"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.doSetup (cyclomatic 23): clsSettings.doSetup has cyclomatic complexity 23 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c279e4dabe0c7415aced7fbf75cc352a51afb5bd3c607acf09bb2dba090ab2a"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.RenumberDoors (cyclomatic 22): form_Main.RenumberDoors has cyclomatic complexity 22 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dec37790f0a43f0014717ebb8d8bd1eebc2c18b138d7dd6c9c5d41e10185067"}},{"ruleId":"D1","level":"warning","message":{"text":"clsAutomationTest.Test1 (cyclomatic 22): clsAutomationTest.Test1 has cyclomatic complexity 22 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d47e70af147cd746cc34b6a6016266107a013a1f7b89a7a85071480870ff5a5"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.RenumberDoors (cyclomatic 22): form_Main.RenumberDoors has cyclomatic complexity 22 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"5631296665534e8ed185733fea067bd13efc77df04e750eaf63e8defec51cb2c"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.buttonOk_Click (cyclomatic 22): form_Main.buttonOk_Click 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":"2016/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"03314d755f368fbb3b6ef49de1b1f04b087ffc698f3a80858e29b5a887e56d0c"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.RenumberDoors (cyclomatic 22): form_Main.RenumberDoors has cyclomatic complexity 22 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"0da3b6063664a311b1b7a74731701a0c251bbf7f7ec1c24130895c3b205381fe"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.buttonOk_Click (cyclomatic 22): form_Main.buttonOk_Click 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":"2017/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"37babcf3322a4a9ccf8e1047bb07605244180d18a507cadb348efe7257db94bf"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.RenumberDoors (cyclomatic 22): form_Main.RenumberDoors has cyclomatic complexity 22 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"46e5005637b987eaafd20b6eafbd851ea6c55e547dc1da4e86cd402a21070daa"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.buttonOk_Click (cyclomatic 22): form_Main.buttonOk_Click 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":"2018/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"93de0109076a508e43b8644383ac00c18308a5ab71e4d3ef791e0f40668d1002"}},{"ruleId":"D1","level":"warning","message":{"text":"clsAutomationTest.Test1 (cyclomatic 22): clsAutomationTest.Test1 has cyclomatic complexity 22 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"78a6de69346c45749b7f7e2dbba7045b098b4b9b8a18d86499d4bfcfa06f3d60"}},{"ruleId":"D1","level":"warning","message":{"text":"clsAutomationTest.Test1 (cyclomatic 22): clsAutomationTest.Test1 has cyclomatic complexity 22 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"44b7cc92645d10ab665cd7d04e14e032cdbccc1a3ec0557270106f9d70704b37"}},{"ruleId":"D1","level":"warning","message":{"text":"clsAutomationTest.Test1 (cyclomatic 22): clsAutomationTest.Test1 has cyclomatic complexity 22 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"29939ed472d6dfa4640a9a5cb21c1c9abbfe14afd087394431fa7393017855d0"}},{"ruleId":"D1","level":"warning","message":{"text":"clsExcel.GetHeaderData (cyclomatic 21): clsExcel.GetHeaderData has cyclomatic complexity 21 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f5658290ef206c0b896908d60886b52f7b035b3e1126a55a7e787ec9e67fb3c"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.UpdateMassParameters (cyclomatic 21): clsSettings.UpdateMassParameters has cyclomatic complexity 21 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"0451bcc9632701b11545514e85f2719606a158fa5da959d1af280ed628898528"}},{"ruleId":"D1","level":"warning","message":{"text":"clsExternalWalls.GetFacingDirection (cyclomatic 21): clsExternalWalls.GetFacingDirection has cyclomatic complexity 21 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"865ee94f14530660761d4a1bf1883be4259ec1666ab296c9b8366874f02cc88a"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.DisplayDoorItems (cyclomatic 21): form_Main.DisplayDoorItems has cyclomatic complexity 21 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4786bc695eb565f4c20d3deae15be544a1229be6cf34eb07c1bb4f3bc66839c"}},{"ruleId":"D1","level":"warning","message":{"text":"UnitConversion.CalculateDoubleLength (cyclomatic 21): UnitConversion.CalculateDoubleLength has cyclomatic complexity 21 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"52ea693cf83781c0d4b627e802c14334f94f3d89e4082df8a519f383d572b774"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.ProcessData (cyclomatic 21): form_Main.ProcessData has cyclomatic complexity 21 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"73a61eac54d20760c2d3d17f0c5b461afde2270a1cd42f325313fd2c96f9e9b6"}},{"ruleId":"D1","level":"warning","message":{"text":"clsExcel.GetHeaderData (cyclomatic 21): clsExcel.GetHeaderData has cyclomatic complexity 21 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"16ef403961ba4c26750e0c673c3a8d937e543592f46a1a87433413db65410a50"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.UpdateMassParameters (cyclomatic 21): clsSettings.UpdateMassParameters has cyclomatic complexity 21 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4c2d52e67246078aac2095a298047f54e046d539aeadb3b30bfd2ea5a2f7cce"}},{"ruleId":"D1","level":"warning","message":{"text":"clsExternalWalls.GetFacingDirection (cyclomatic 21): clsExternalWalls.GetFacingDirection has cyclomatic complexity 21 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd9d4c3b3e485fcb84d568c4a4be4a010ae0f55bf408ff30a30a6a9762e11b0b"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.DisplayDoorItems (cyclomatic 21): form_Main.DisplayDoorItems has cyclomatic complexity 21 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"349be1486ef79be4486ac2c4f4ab012396de93fb87333c7a785a55f42d771756"}},{"ruleId":"D1","level":"warning","message":{"text":"UnitConversion.CalculateDoubleLength (cyclomatic 21): UnitConversion.CalculateDoubleLength has cyclomatic complexity 21 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a6631fdd52f71ea76d9240b5af2932ce0b348fed849b390a4a18fa53fa14e16"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.ProcessData (cyclomatic 21): form_Main.ProcessData has cyclomatic complexity 21 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"74b4a10e591c7732b0e23aa77189d98a4c650c486abcf31523649f31fa0af0f3"}},{"ruleId":"D1","level":"warning","message":{"text":"clsExcel.GetHeaderData (cyclomatic 21): clsExcel.GetHeaderData has cyclomatic complexity 21 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"b27f9b3e8b6a376f4fb2ac250fe715fa529bea0eeb7b1b11c845f35e6a55f795"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.UpdateMassParameters (cyclomatic 21): clsSettings.UpdateMassParameters has cyclomatic complexity 21 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c1342b256287aa6dcf1cfd8a6456008b7496e58a3fe5c9ddba32cabaf01d659"}},{"ruleId":"D1","level":"warning","message":{"text":"clsExternalWalls.GetFacingDirection (cyclomatic 21): clsExternalWalls.GetFacingDirection has cyclomatic complexity 21 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a0d63750c6945ea2b684590cea23f1872cd9f483c1616efbf09443cf0698692"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.DisplayDoorItems (cyclomatic 21): form_Main.DisplayDoorItems has cyclomatic complexity 21 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"70048e92028040aaf8395248e240bdba8a36d9f4b69319017bb956ee437bad84"}},{"ruleId":"D1","level":"warning","message":{"text":"UnitConversion.CalculateDoubleLength (cyclomatic 21): UnitConversion.CalculateDoubleLength has cyclomatic complexity 21 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"22fb386aa9db48fc248ff01a490ea54200b854aab9af45f05241c1e9a4828a63"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.ProcessData (cyclomatic 21): form_Main.ProcessData has cyclomatic complexity 21 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1431ba4f8664ab631d976cc3cfac1a1fd443b47e4ccefd7a7cf197dd93465ad"}},{"ruleId":"D1","level":"warning","message":{"text":"clsExcel.GetHeaderData (cyclomatic 21): clsExcel.GetHeaderData has cyclomatic complexity 21 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"d37ae21e8a9fada197f0eef4df38f4f1f450e0c54d2463523f7246fb54bf6dee"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.UpdateMassParameters (cyclomatic 21): clsSettings.UpdateMassParameters has cyclomatic complexity 21 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"475efcf03e2b53289107a33619e1fb918d9f07d0f1e4de7fa56118c585909503"}},{"ruleId":"D1","level":"warning","message":{"text":"clsExternalWalls.GetFacingDirection (cyclomatic 21): clsExternalWalls.GetFacingDirection has cyclomatic complexity 21 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"c59cb5907d97afe867d2bd0890b6963f490478cbfafdb96deda75ec045de38ba"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.DisplayDoorItems (cyclomatic 21): form_Main.DisplayDoorItems has cyclomatic complexity 21 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab8c4a1957ea3403a1230d392f175820d29f1731f9c18dc18cf9e984329de190"}},{"ruleId":"D1","level":"warning","message":{"text":"UnitConversion.CalculateDoubleLength (cyclomatic 21): UnitConversion.CalculateDoubleLength has cyclomatic complexity 21 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"b40bab17bf454a067579cf7002fa22cf34e7bbb81236a6041e65a03b44f414a5"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.ProcessData (cyclomatic 21): form_Main.ProcessData has cyclomatic complexity 21 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"64adb8883570d27a94d8938ecd3074113b61301cbb4756f22f61695c8dc3a086"}},{"ruleId":"D1","level":"warning","message":{"text":"clsIoConfig.ReadData (cyclomatic 20): clsIoConfig.ReadData has cyclomatic complexity 20 (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":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fddbac0ed6a54591fe24ff5f89db041ab92551801b2518306e863d5c4feb317"}},{"ruleId":"D1","level":"warning","message":{"text":"clsIoIni.Setup (cyclomatic 20): clsIoIni.Setup has cyclomatic complexity 20 (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":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"a444f4b910a4b3eebf64243cb872d59a9c6406f60dddc43ee3c04df56c42d3c4"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Sync.UpdateWorksheetData (cyclomatic 20): form_Sync.UpdateWorksheetData has cyclomatic complexity 20 (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":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":581}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b0894e4169c1c361172c835cc3a9e41e6c0d763a32127639ede6391e133bc89"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.RefreshViewList (cyclomatic 20): form_Main.RefreshViewList has cyclomatic complexity 20 (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":"2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7fdd7d9f4f7754c0d83f3658e42b04c95c8c81ddb5de052bfe143a47b35ba55"}},{"ruleId":"D1","level":"warning","message":{"text":"D9B42C3FEA6F4F9E8E1B62E993AA2513.Execute (cyclomatic 20): D9B42C3FEA6F4F9E8E1B62E993AA2513.Execute has cyclomatic complexity 20 (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":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"edd1094c944b22685fd655155db84b3998610facfda22f8500ccf7d674ffc486"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.LoadViews (cyclomatic 20): form_Main.LoadViews has cyclomatic complexity 20 (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":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac443740bb844648990199285e3e9eb2f9b79dd8cf45ec093c5a1bf9f1581350"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.RefreshViewList (cyclomatic 20): form_Main.RefreshViewList has cyclomatic complexity 20 (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":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b3e42802b3a020eb13ab33a58922f4ca0f3b76ec9dfc647f2f9e9d34f7f3785"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.makeViews (cyclomatic 20): form_Main.makeViews 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":"2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7e74d8088dd68ff682096c1df0daef19bceedc422fe1addc8477e4a93b3878f"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.buttonOk_Click (cyclomatic 20): form_Main.buttonOk_Click 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":"2015/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fcdee6ec6ec51a7c50757169a420b5f8cfc47356aa95e3bd3ada218a7b678b7"}},{"ruleId":"D1","level":"warning","message":{"text":"clsIoConfig.ReadData (cyclomatic 20): clsIoConfig.ReadData has cyclomatic complexity 20 (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":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"960244c8211a167228578b902b34a84defdd56be69acf3a838445daab67bce95"}},{"ruleId":"D1","level":"warning","message":{"text":"clsIoIni.Setup (cyclomatic 20): clsIoIni.Setup has cyclomatic complexity 20 (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":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ae29060b03c222e7d0e650c1b42085161bf95ebceed0cb4e62e4d4301a88402"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Sync.UpdateWorksheetData (cyclomatic 20): form_Sync.UpdateWorksheetData has cyclomatic complexity 20 (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":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":581}}}],"partialFingerprints":{"codehealthFindingId/v1":"f33aa803fb82e0ad18d67f85d9aa51d2f96ecf8cec22a10690827a7043043cc1"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.RefreshViewList (cyclomatic 20): form_Main.RefreshViewList has cyclomatic complexity 20 (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":"2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"06df962185c5992550f24e72576da56df0666ea4f9b0c41c38325d3545d66738"}},{"ruleId":"D1","level":"warning","message":{"text":"D9B42C3FEA6F4F9E8E1B62E993AA2513.Execute (cyclomatic 20): D9B42C3FEA6F4F9E8E1B62E993AA2513.Execute has cyclomatic complexity 20 (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":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0e4fd0f4606dec0902b96297954ffa19fb8d2ac4ea01f314aaa5d9d62fa1386"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.LoadViews (cyclomatic 20): form_Main.LoadViews has cyclomatic complexity 20 (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":"2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2e9c5400e84bf36261b5ad2ac06948bdfae62d6b763cf9caa8001f88374c4a9"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.RefreshViewList (cyclomatic 20): form_Main.RefreshViewList has cyclomatic complexity 20 (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":"2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"883224c830683bfc3ae766a08a1bc84b972d028d869dda7214da89cd15c081f2"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.makeViews (cyclomatic 20): form_Main.makeViews 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":"2016/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"23f073059ccdc4ae507b402a40c1f96d076775f07cb23b8d6b92f1bfdd802195"}},{"ruleId":"D1","level":"warning","message":{"text":"clsIoConfig.ReadData (cyclomatic 20): clsIoConfig.ReadData has cyclomatic complexity 20 (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":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"70a23d3a3333f54abdab7e822e8208cb56be16ef3aee49aa37bce0d0c474fc44"}},{"ruleId":"D1","level":"warning","message":{"text":"clsIoIni.Setup (cyclomatic 20): clsIoIni.Setup has cyclomatic complexity 20 (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":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"f744592da7f3586ba871030910f395f3ada9c3e9279ed2760135f3428d4c46db"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Sync.UpdateWorksheetData (cyclomatic 20): form_Sync.UpdateWorksheetData has cyclomatic complexity 20 (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":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":581}}}],"partialFingerprints":{"codehealthFindingId/v1":"04480ee9e782347733c44755e3c5e6052c548b100d4e8cdd2c9958a68a999c50"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.RefreshViewList (cyclomatic 20): form_Main.RefreshViewList has cyclomatic complexity 20 (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":"2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"768cb0daddc6b896484f02721425a728d51b8aeaef1841f279e0fe5d8ea790e9"}},{"ruleId":"D1","level":"warning","message":{"text":"D9B42C3FEA6F4F9E8E1B62E993AA2513.Execute (cyclomatic 20): D9B42C3FEA6F4F9E8E1B62E993AA2513.Execute has cyclomatic complexity 20 (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":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"15e0388209bb7b5a334abef1b135a684eadfd66f6514ac671fd4984669793536"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.LoadViews (cyclomatic 20): form_Main.LoadViews has cyclomatic complexity 20 (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":"2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"076502c87530c671247ad6a024044738dbc9d90cb9f9630d4f8944f6b3faabfc"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.RefreshViewList (cyclomatic 20): form_Main.RefreshViewList has cyclomatic complexity 20 (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":"2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bf97718783e3bfd619e66db5f7f5f00e4d17c4e0a8a72c97d4d574bc1eed415"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.makeViews (cyclomatic 20): form_Main.makeViews 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":"2017/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"92a07e394e8b6d42e306a629e61ad9db537d84aaace4af204ba54d90777233e3"}},{"ruleId":"D1","level":"warning","message":{"text":"clsIoConfig.ReadData (cyclomatic 20): clsIoConfig.ReadData has cyclomatic complexity 20 (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":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"d886ffde0933d5cf7d000f3d2473c269a1b75e668de69a3c96d0b9396d0237f8"}},{"ruleId":"D1","level":"warning","message":{"text":"clsIoIni.Setup (cyclomatic 20): clsIoIni.Setup has cyclomatic complexity 20 (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":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebbd1c7c9ee065db78138cc625e16651b18f2a4d7478be0497c00664f188263b"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Sync.UpdateWorksheetData (cyclomatic 20): form_Sync.UpdateWorksheetData has cyclomatic complexity 20 (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":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":581}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd1f04cbfe61c6004f749ed30af085077bee77b89fce482da611edd08e03d6f8"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.RefreshViewList (cyclomatic 20): form_Main.RefreshViewList has cyclomatic complexity 20 (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":"2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cadb42acebdcd1c312383bd40e2940d36b14440f3648a890adc223595aade73"}},{"ruleId":"D1","level":"warning","message":{"text":"D9B42C3FEA6F4F9E8E1B62E993AA2513.Execute (cyclomatic 20): D9B42C3FEA6F4F9E8E1B62E993AA2513.Execute has cyclomatic complexity 20 (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":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"e64e6934566b73d8e8b10037ed4baf5f55dbc17eabb516db61211d0d4c78fe85"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.LoadViews (cyclomatic 20): form_Main.LoadViews has cyclomatic complexity 20 (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":"2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"23b9c1966164e75b526b8a55530e2f29a1cc3278b2d9d1a8c58ac89bc9422c09"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.RefreshViewList (cyclomatic 20): form_Main.RefreshViewList has cyclomatic complexity 20 (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":"2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"efbd2ea91769b97757a43282a37f61f517a671ef27379be68c25919cc75199ab"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.makeViews (cyclomatic 20): form_Main.makeViews 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":"2018/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"e174d53f59fd3f7678aae208be07e286367eaa63a1de7eeabc02811c6431f98b"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.DeleteSelections (cyclomatic 19): form_Main.DeleteSelections has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca43bbc88a61fb993283994226e018acebda0e1d0963d51b0a1d8e663d92bf27"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Export.ExportData (cyclomatic 19): form_Export.ExportData has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f0b2d095065321e07720d93d6c4ad4b023850219dcf798c1f271167c117d84c"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.DuplicateViews (cyclomatic 19): form_Main.DuplicateViews has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e3a7be1b5de4f7ed826c65fdad7bc784e8f8250dde8c847df02727dbc569b68"}},{"ruleId":"D1","level":"warning","message":{"text":"form_ImportMain.Button_Import_Click (cyclomatic 19): form_ImportMain.Button_Import_Click has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"36916ce1ef924afe11f84e2c7efee8636969019e35ae21719aa53219c956f9e3"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Parameters.LoadDatagrid (cyclomatic 19): form_Parameters.LoadDatagrid has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cc0428b20636908685b520d3606651fdeeaf3076df87c86e02340a46c882dd8"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Data.ShowAsCategoryBasic (cyclomatic 19): form_Data.ShowAsCategoryBasic has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"bec83c247f7cc1c3eabf02919348534e6594b742e6f7aef5faad15480c459ef2"}},{"ruleId":"D1","level":"warning","message":{"text":"clsConfiguration.ReadFile (cyclomatic 19): clsConfiguration.ReadFile has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a5aeab1b98a51bf649be2fb582afb3d86b1e9a9a83d54d896c5f834f560f650"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.DeleteSelections (cyclomatic 19): form_Main.DeleteSelections has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cdd4821818293d9459da09e1e888aea02b594d8fe6a37f63352df535d83bdcb"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Export.ExportData (cyclomatic 19): form_Export.ExportData has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"56771cfd5675ae54c7db09082328a616950da33c874c508407b1a79258d374d3"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.DuplicateViews (cyclomatic 19): form_Main.DuplicateViews has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"b339afdd5c9e5f08cf652fe391f31cf394fb8d46e9c8c7d432f843d21595ff03"}},{"ruleId":"D1","level":"warning","message":{"text":"form_ImportMain.Button_Import_Click (cyclomatic 19): form_ImportMain.Button_Import_Click has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"da51d12c12b245bcf5cf82896b4e9c3b440aabf0eb3a57be805bdaa44b404ce6"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Parameters.LoadDatagrid (cyclomatic 19): form_Parameters.LoadDatagrid has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"6179d3cf575f20de9de603551bcc544f137ab5cc6e24fc191400e3dd82af4f68"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Data.ShowAsCategoryBasic (cyclomatic 19): form_Data.ShowAsCategoryBasic has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a601400dd0c65368b8730135f3a9be817d04957637dd530a1a0556f24dc1ad5"}},{"ruleId":"D1","level":"warning","message":{"text":"clsConfiguration.ReadFile (cyclomatic 19): clsConfiguration.ReadFile has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"4551caa9dc90d42a37c856715ffd5977ad1203da6d847d0f56f9628328d24d85"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.DeleteSelections (cyclomatic 19): form_Main.DeleteSelections has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"957f65e4b6387c008172453d23385e0183fe86dfd3e8de50ed51c18c0806e53c"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Export.ExportData (cyclomatic 19): form_Export.ExportData has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"004a464e80333da2aa02cdabc612f7074da45399c9e2585dee8299d87b1edc3e"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.DuplicateViews (cyclomatic 19): form_Main.DuplicateViews has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"e625aafcc0276bd581dcc7a00d480e1aecc384d1b52099b2ccc241fc7d080708"}},{"ruleId":"D1","level":"warning","message":{"text":"form_ImportMain.Button_Import_Click (cyclomatic 19): form_ImportMain.Button_Import_Click has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbd354d183d5d06813a12aaede37dc5abe38273ce869cdfa9981eb08e7abd3dc"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Parameters.LoadDatagrid (cyclomatic 19): form_Parameters.LoadDatagrid has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"57ff36a58062d24661279b9adba452239816456441eb72d7e7fb626a0ca8da14"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Data.ShowAsCategoryBasic (cyclomatic 19): form_Data.ShowAsCategoryBasic has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"6443da8dfa80ca051587bd449386d22fb47abf3965ecabe00f059230f7329280"}},{"ruleId":"D1","level":"warning","message":{"text":"clsConfiguration.ReadFile (cyclomatic 19): clsConfiguration.ReadFile has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f056bd4e94fbc4ee7f6d9295c83d4f1a432a255e5e7f2d0fac4499806747096"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.DeleteSelections (cyclomatic 19): form_Main.DeleteSelections has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e72c6c2880d7a02bfcf8f0534870733e7e1080cc960c6b9edcde86aba0c82b4"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Export.ExportData (cyclomatic 19): form_Export.ExportData has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b8eb84a2707c21967584605e615b788f9708e35e491f224ce4db20b7f996ccf"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.DuplicateViews (cyclomatic 19): form_Main.DuplicateViews has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4e93696acb9741454cf652ae498450099fc6e379e381d196e35e59c0f57614b"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Parameters.LoadDatagrid (cyclomatic 19): form_Parameters.LoadDatagrid has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec318ea9a4e12d3b0516f5f5ea9964a041117df03b74856a46dfeb5441b614ab"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Data.ShowAsCategoryBasic (cyclomatic 19): form_Data.ShowAsCategoryBasic has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"555e4ac5c3ae603b391fddb72af7502095c7d2f8e7cc0bf5707c569d2e35b3ba"}},{"ruleId":"D1","level":"warning","message":{"text":"clsConfiguration.ReadFile (cyclomatic 19): clsConfiguration.ReadFile has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"6435952f186aa4c7faa6a2442fb9e3400095115fa346cb74efb8dc70f7e255a9"}},{"ruleId":"D1","level":"warning","message":{"text":"form_ImportMain.Button_Import_Click (cyclomatic 19): form_ImportMain.Button_Import_Click has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d5bedac62a66901c5d4a197e2cf68e4c97c99431a4467c820b5ca614a144413"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Data.ButtonSelect_Click (cyclomatic 18): form_Data.ButtonSelect_Click has cyclomatic complexity 18 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":611}}}],"partialFingerprints":{"codehealthFindingId/v1":"7353f15bbf65a40c9844bf521799f48eb8da7208782b4ff5dcdd644c52785a3e"}},{"ruleId":"D1","level":"warning","message":{"text":"AppMain.AddAsStackedAndButtons (cyclomatic 18): AppMain.AddAsStackedAndButtons has cyclomatic complexity 18 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon/Entry/AppMain.vb"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"47ba7649e7c92ecb01543d3942eca33fa29e21ee6ef59db8744ed28ab5e771bb"}},{"ruleId":"D1","level":"warning","message":{"text":"AppMain.LoadItemsTwo (cyclomatic 18): AppMain.LoadItemsTwo has cyclomatic complexity 18 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon/Entry/AppMain.vb"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d8864b33ed6a2784e7cc65b183e96b0dbcc9042610768687268cab2081cf7b8"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Data.ButtonSelect_Click (cyclomatic 18): form_Data.ButtonSelect_Click has cyclomatic complexity 18 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":611}}}],"partialFingerprints":{"codehealthFindingId/v1":"243d7ee26a0877d42c49fa1d82cd6cadda2ab56163c12883d13df4f5cd3ec747"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Data.ButtonSelect_Click (cyclomatic 18): form_Data.ButtonSelect_Click has cyclomatic complexity 18 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":611}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b90b55cf9bb95d3ec9934c490b5941be70f4c43823d4711778a4696eb7fa402"}},{"ruleId":"D1","level":"warning","message":{"text":"AppMain.AddAsStackedAndButtons (cyclomatic 18): AppMain.AddAsStackedAndButtons has cyclomatic complexity 18 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2017/Entry/AppMain.vb"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"53eefaa06800d733b9804e57e60d08f465b10bd51b6da1682e5720b148515a56"}},{"ruleId":"D1","level":"warning","message":{"text":"AppMain.LoadItemsTwo (cyclomatic 18): AppMain.LoadItemsTwo has cyclomatic complexity 18 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2017/Entry/AppMain.vb"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"94756c30a0d0d4a4f27932675ef8cb75411b33d0f6fc441922775e22bebcbe60"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Data.ButtonSelect_Click (cyclomatic 18): form_Data.ButtonSelect_Click has cyclomatic complexity 18 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":611}}}],"partialFingerprints":{"codehealthFindingId/v1":"e839ed21c0865f81d5d0331d58513870d2ac6eef28f842c63dca9ad4097fab22"}},{"ruleId":"D1","level":"warning","message":{"text":"AppMain.AddAsStackedAndButtons (cyclomatic 18): AppMain.AddAsStackedAndButtons has cyclomatic complexity 18 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2018/Entry/AppMain.vb"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"76af8d15905dee2772c61464d802ac1f173c951ee2b1de554760e8f5348c59df"}},{"ruleId":"D1","level":"warning","message":{"text":"AppMain.LoadItemsTwo (cyclomatic 18): AppMain.LoadItemsTwo has cyclomatic complexity 18 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2018/Entry/AppMain.vb"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"da040c2042c0eaba6cf46fd1d9fb294f8a38a3f3408fc243ce8f256c2dc33c3a"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.ChangeIfMatch (cyclomatic 17): clsSettings.ChangeIfMatch 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":"2015/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"927ddc8b589a31d30f99e1b801b227925ceffb1b14ae170185ead00482a4d2b2"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.LoadSharedParameters (cyclomatic 17): form_Main.LoadSharedParameters 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":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a581bb2c4f68faf3808c6212aef57555b594ef85fcc1e8339cfde27c46b49b0"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.GetViews (cyclomatic 17): clsSettings.GetViews 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":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4961d0f9235f61633d5aa2cb8acedd3b96c4ed52829db6bbfaadecea18e0368"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.ChangeIfMatch (cyclomatic 17): clsSettings.ChangeIfMatch 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":"2015/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"60e9d9c1fbb42fac8f905777cce0eae1728c9eddabe7780b9df9ac4392cd5bdc"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.DuplicateViews (cyclomatic 17): form_Main.DuplicateViews 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":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbc28fa96a6df7cee91df9fa1ff8617a9b66c9bbc555b4c048789a8943319bbf"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.Setup (cyclomatic 17): clsSettings.Setup 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":"2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"6763478c48f3f2ba9497dae79700530c83ab2db8ff1864bce24ecd8c1091fe1f"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.ChangeIfMatch (cyclomatic 17): clsSettings.ChangeIfMatch 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":"2016/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"630be7719d6d43e1bae44568c745347816b1ff7f3a9b00ed5196de525b2ff686"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.LoadSharedParameters (cyclomatic 17): form_Main.LoadSharedParameters 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":"2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"1162ae9cdd3cea3921062567c61a4f0636c4cf8673761403da08332d4a4aee72"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.GetViews (cyclomatic 17): clsSettings.GetViews 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":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3e391c04a886df22683f1e82d7acf91da2f32db08c611ebb8ecc874a8700400"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.ChangeIfMatch (cyclomatic 17): clsSettings.ChangeIfMatch 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":"2016/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd541b8a55f8d280643f8b6dff24b5c325232c4bb99adeba8d9d80007ecadb49"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.DuplicateViews (cyclomatic 17): form_Main.DuplicateViews 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":"2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a8acc41ebb1249f1643294306ca6b262c9c0907890d5ecabf7a1fff20ee9d7d"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.Setup (cyclomatic 17): clsSettings.Setup 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":"2016/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c4d0411d282b7f5197c59032e43bfc0ddfe2f5b5af52c79cda9f39da00b9fd7"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.ChangeIfMatch (cyclomatic 17): clsSettings.ChangeIfMatch 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":"2017/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"78e5ecde8acbe883d343067a4d05c2840390b3244744093bfa0a1b0e35e5fce2"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.LoadSharedParameters (cyclomatic 17): form_Main.LoadSharedParameters 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":"2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"543551b5fad02105f649035616aa2b908c6cfeca8f74cbd383d59067159fd7e4"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.GetViews (cyclomatic 17): clsSettings.GetViews 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":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9a99788fea8021022959600bca1bf66d3859ae31c72d0ddb93b93a99dd0b7c8"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.ChangeIfMatch (cyclomatic 17): clsSettings.ChangeIfMatch 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":"2017/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"3302291d3b58d4feff36b10aeb71be2ddda934fe1bf68368d9b3d17c59ae2e05"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.DuplicateViews (cyclomatic 17): form_Main.DuplicateViews 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":"2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6ec9970302de979613f2a68b056e00f1cca0d2ad2e7fc5b24baee50eca5cc9f"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.Setup (cyclomatic 17): clsSettings.Setup 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":"2017/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"f972cd736f0cc8bb047922688569daf01227821862a7540a389b21c9dd05b8ac"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.ChangeIfMatch (cyclomatic 17): clsSettings.ChangeIfMatch 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":"2018/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"9059db1e50140edd248b60228c616183d2b3dc2468446e8f11cd5b7ea6de4605"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.LoadSharedParameters (cyclomatic 17): form_Main.LoadSharedParameters 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":"2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"10c8ba29bcc5550a34f1c5bbd5d8b4d0831fd5faac64a2a39428d0cd8538d26d"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.GetViews (cyclomatic 17): clsSettings.GetViews 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":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0bcef8e6086a73879e795f0d2dfa1b83982153e130743246d9d91de254af353"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.ChangeIfMatch (cyclomatic 17): clsSettings.ChangeIfMatch 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":"2018/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2050d2b5876bfcf56c6c1982acf1adf9deb60f2e38666206ef83627a2142080"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Main.DuplicateViews (cyclomatic 17): form_Main.DuplicateViews 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":"2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"5aa33c8c1ee76b774cdea1ea1f32c2df81ec087a39da0ec2c7cd2cb6a89e41fb"}},{"ruleId":"D1","level":"warning","message":{"text":"clsSettings.Setup (cyclomatic 17): clsSettings.Setup 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":"2018/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5711558b9afdd8b362acf6170f8260be292e3fe7cc80abc7cc7dccc49f1115a"}},{"ruleId":"D1","level":"warning","message":{"text":"clsExcel.FillDataTableFromExcelWorksheet (cyclomatic 16): clsExcel.FillDataTableFromExcelWorksheet has cyclomatic complexity 16 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8fcb94ed99afa476cefbdf80cb8a07bac995bd47566e2d3597d7a3cf9b64f2b"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Families.doExport (cyclomatic 16): form_Families.doExport has cyclomatic complexity 16 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"21f3276388a1716bd18486be593d0920fc2d71e3775ad2f9d38f0538316fcc5d"}},{"ruleId":"D1","level":"warning","message":{"text":"clsExcel.FillDataTableFromExcelWorksheet (cyclomatic 16): clsExcel.FillDataTableFromExcelWorksheet has cyclomatic complexity 16 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"64fa6843eeef0201ebab7f658197106dd3fd4b418ff6b77149c7b4246c00c96e"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Families.doExport (cyclomatic 16): form_Families.doExport has cyclomatic complexity 16 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"52f0597a3648707f460a35df38ea12201f06b6e865be5e0fc25a4b5d5e46d423"}},{"ruleId":"D1","level":"warning","message":{"text":"clsExcel.FillDataTableFromExcelWorksheet (cyclomatic 16): clsExcel.FillDataTableFromExcelWorksheet has cyclomatic complexity 16 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"97c4fc36647a8093222ab51557e71ac888dedd22eab8a65bc190ab4e16e49985"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Families.doExport (cyclomatic 16): form_Families.doExport has cyclomatic complexity 16 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"8048a25470b99d4d8034fb495e5190ceba2c27547d2f0682441c5e0046b07083"}},{"ruleId":"D1","level":"warning","message":{"text":"clsExcel.FillDataTableFromExcelWorksheet (cyclomatic 16): clsExcel.FillDataTableFromExcelWorksheet has cyclomatic complexity 16 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"888302ad52aacd8bbb6f765b7048842751b0bc440544420fb6d255d4eccd0349"}},{"ruleId":"D1","level":"warning","message":{"text":"form_Families.doExport (cyclomatic 16): form_Families.doExport has cyclomatic complexity 16 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"c51a27c5df3fb4ea505edfa27822c455a587d49b5025f31c043118a0a90a83a2"}},{"ruleId":"D2","level":"warning","message":{"text":"clsRvtCategoryData.GetAllPropertyValues (cognitive 329): clsRvtCategoryData.GetAllPropertyValues has cognitive complexity 329 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"72e7037c23b203e6132d33d7162c883b5f395cf1ee5430d57d57627cf7b31cbe"}},{"ruleId":"D2","level":"warning","message":{"text":"clsRvtCategoryData.GetAllPropertyValues (cognitive 329): clsRvtCategoryData.GetAllPropertyValues has cognitive complexity 329 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3dc401f17dd79df9a5e6b49a2413005997febcb2e5a2524d2d6185a0753e007"}},{"ruleId":"D2","level":"warning","message":{"text":"clsRvtCategoryData.GetAllPropertyValues (cognitive 329): clsRvtCategoryData.GetAllPropertyValues has cognitive complexity 329 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"02e078f1f4f246eeef918fbc093286dbb62f08cf0b0fdb268495556622ef3251"}},{"ruleId":"D2","level":"warning","message":{"text":"clsRvtCategoryData.GetAllPropertyValues (cognitive 329): clsRvtCategoryData.GetAllPropertyValues has cognitive complexity 329 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"c885e7d3e6526bf46052f07628b434fd251fcde20c982d820d42a89eb367f0e2"}},{"ruleId":"D2","level":"warning","message":{"text":"clsONSort.SortObjects (cognitive 229): clsONSort.SortObjects has cognitive complexity 229 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONSort.vb"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"43a4d1e66febd5098dc69514adfa964ae597d90dffb56aa028cbec1715d7171e"}},{"ruleId":"D2","level":"warning","message":{"text":"clsONSort.SortObjects (cognitive 229): clsONSort.SortObjects has cognitive complexity 229 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONSort.vb"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e5abba2f2854f9fe60439ae96cf1e580a4ac376c319f2a5c816c8cfefe824c9"}},{"ruleId":"D2","level":"warning","message":{"text":"clsONSort.SortObjects (cognitive 229): clsONSort.SortObjects has cognitive complexity 229 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONSort.vb"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"d199cbeef83b0ad5f63487f8d084a5fdb49fa7bfc50eac290bc4c050a2af3dee"}},{"ruleId":"D2","level":"warning","message":{"text":"clsONSort.SortObjects (cognitive 229): clsONSort.SortObjects has cognitive complexity 229 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONSort.vb"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"9609e77ad2c299cb118e025b8f129c7abaa2e1ee9451e04a8dfca1271b176125"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.UpdateElementValues (cognitive 192): clsSettings.UpdateElementValues has cognitive complexity 192 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":738}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e331eb6512ee24a1a746527a636e892719b647a79f512b3111bf775a1977c14"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.UpdateElementValues (cognitive 192): clsSettings.UpdateElementValues has cognitive complexity 192 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":738}}}],"partialFingerprints":{"codehealthFindingId/v1":"62cd343dab2dcb637f50e548b6043d9a6fd968a13abbb5e23602071d66a517b0"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.UpdateElementValues (cognitive 192): clsSettings.UpdateElementValues has cognitive complexity 192 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":738}}}],"partialFingerprints":{"codehealthFindingId/v1":"46f6c62b825b0dffd1c912724fd3f5c225fe520130709b26205d2e122e9140a2"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.UpdateElementValues (cognitive 192): clsSettings.UpdateElementValues has cognitive complexity 192 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":738}}}],"partialFingerprints":{"codehealthFindingId/v1":"32d7da1c390884f843da5b037dc184b074d9c35d2e6ca0208f7d7e2b2a78f42e"}},{"ruleId":"D2","level":"warning","message":{"text":"form_RoomMasses.GenerateMasses (cognitive 161): form_RoomMasses.GenerateMasses has cognitive complexity 161 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ae9fced745a8489d5bcf7a1dd6c8790e309aeb9c090ad5860477b5e3bb9fc5d"}},{"ruleId":"D2","level":"warning","message":{"text":"form_RoomMasses.GenerateMasses (cognitive 161): form_RoomMasses.GenerateMasses has cognitive complexity 161 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"3aef1471523d138c83911f166a263086352fe033c511632c0b46877be5955ad4"}},{"ruleId":"D2","level":"warning","message":{"text":"form_RoomMasses.GenerateMasses (cognitive 161): form_RoomMasses.GenerateMasses has cognitive complexity 161 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea78fe9e93bafbc9c785b0ce6aa33fb66c81bd2ee50bf174eb6a034e29fa4389"}},{"ruleId":"D2","level":"warning","message":{"text":"form_RoomMasses.GenerateMasses (cognitive 161): form_RoomMasses.GenerateMasses has cognitive complexity 161 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bf63b445c5bdf8da56aabea9fec586a44a654b8a2bfe42fae20b542bf909b0f"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Sync.UpdateElementData (cognitive 157): form_Sync.UpdateElementData has cognitive complexity 157 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"55bf98c5fee77a4dc7406317a5a6f32698b89bf7095581a082619d3df1045f70"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Sync.UpdateElementData (cognitive 157): form_Sync.UpdateElementData has cognitive complexity 157 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"78fe97815064d597630717b6d789d3bd0ec090afdd9a57fdb4453279935e3207"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Sync.UpdateElementData (cognitive 157): form_Sync.UpdateElementData has cognitive complexity 157 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8e14b19f26cbc24757f00bf1eadc686ac0d2073b2e561e33066698d9ce11f48"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Sync.UpdateElementData (cognitive 157): form_Sync.UpdateElementData has cognitive complexity 157 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"51b6212d3ca7a170e5c776cb2fd85e465c6fbb7fe85007578b07b77b15e077f0"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetSymbolNames (cognitive 137): clsSettings.GetSymbolNames has cognitive complexity 137 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"0232fa46c6bfca48c2ce3abfcc0959c8ec6fcf76a1a3c81648fea25f65434c9f"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetSymbolNames (cognitive 137): clsSettings.GetSymbolNames has cognitive complexity 137 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"413d88d4efe497581eb9e80e4bfb16781415291fe8a9039963b6562f0816af5e"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetSymbolNames (cognitive 137): clsSettings.GetSymbolNames has cognitive complexity 137 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"91d419611769cfb045e7d59fcdf8ba76f32a340c683b08772ea396c51b9f23bd"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetSymbolNames (cognitive 137): clsSettings.GetSymbolNames has cognitive complexity 137 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"47e4ad5354be92d40f1c808a421bf6af0746afe8c514cb02982f37a0de001e11"}},{"ruleId":"D2","level":"warning","message":{"text":"Form_Main.TagElementsInViews (cognitive 133): Form_Main.TagElementsInViews has cognitive complexity 133 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"208f3f0c68355025709b12eca09a7f811d8b43cfa0f3eff8481a80f89cfba86c"}},{"ruleId":"D2","level":"warning","message":{"text":"Form_Main.TagElementsInViews (cognitive 133): Form_Main.TagElementsInViews has cognitive complexity 133 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ecfb3aa7f30ec7e04b2afe70fe22c9a9999c3ad457c5aebb685bb41b478ace3"}},{"ruleId":"D2","level":"warning","message":{"text":"Form_Main.TagElementsInViews (cognitive 133): Form_Main.TagElementsInViews has cognitive complexity 133 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e83e7ecd1fdc32c232acb4a99cd8aeb58b002dc99ee93394bbab1bf2866958e"}},{"ruleId":"D2","level":"warning","message":{"text":"Form_Main.TagElementsInViews (cognitive 133): Form_Main.TagElementsInViews has cognitive complexity 133 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d9b917187cbeaad3d87bc8a2031da5bc9177481c942cdfcc2879345d1a8969e"}},{"ruleId":"D2","level":"warning","message":{"text":"clsRvtCategoryData.GetPropertyNames (cognitive 123): clsRvtCategoryData.GetPropertyNames has cognitive complexity 123 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"6df534b0c261d6615ccd6a73750ce7ee86e55a948367d1f32294de8da10367f8"}},{"ruleId":"D2","level":"warning","message":{"text":"clsRvtCategoryData.GetPropertyNames (cognitive 123): clsRvtCategoryData.GetPropertyNames has cognitive complexity 123 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b96fc0285de44da25bacf35a1f2373eb2a047af74c155d9cf9af7124ffda797"}},{"ruleId":"D2","level":"warning","message":{"text":"clsRvtCategoryData.GetPropertyNames (cognitive 123): clsRvtCategoryData.GetPropertyNames has cognitive complexity 123 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4f43e5b1bac8ea3f133bf9aa3279a1451355bee12660cf4e79eb7fdc233eea1"}},{"ruleId":"D2","level":"warning","message":{"text":"clsRvtCategoryData.GetPropertyNames (cognitive 123): clsRvtCategoryData.GetPropertyNames has cognitive complexity 123 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"31fbe33ab7c117b30467d7e9d6a0e877ba80fad168a067a8d21dc09451838552"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.ScanCategories (cognitive 113): clsSettings.ScanCategories has cognitive complexity 113 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b45283f31f49f5bcb3516390c58984409d84d1598131a85e102f5bbbebd0f43"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.ScanCategories (cognitive 113): clsSettings.ScanCategories has cognitive complexity 113 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f90460f27195f2b3330bb368bbfb4871ca9c542e03aed8621ea5070442300e8"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.ScanCategories (cognitive 113): clsSettings.ScanCategories has cognitive complexity 113 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"535631bbbc46fd45e4d654ec13ba63c2b8c67c1b64b547ad64ae0f89801ad2ea"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.ScanCategories (cognitive 113): clsSettings.ScanCategories has cognitive complexity 113 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"db25b2ff85977dfe29f58f26da5b55a141e45fc05f50677e5dfd63df6f8bae0c"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Sync.SyncRooms (cognitive 109): form_Sync.SyncRooms has cognitive complexity 109 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1592366d8cea9f9dd5b56d338de1d91dcd016d31f40f38a430364a8ac952d7a"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Sync.SyncRooms (cognitive 109): form_Sync.SyncRooms has cognitive complexity 109 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"e947740d113d4ec5a377003588bfc5735b40df80b2131cdc0307e3f26ba26c94"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Sync.SyncRooms (cognitive 109): form_Sync.SyncRooms has cognitive complexity 109 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"5dd9ff41dcee4c53db846d1160ee04559719d0b85d6be94b4d36a72ae1dfaa31"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Sync.SyncRooms (cognitive 109): form_Sync.SyncRooms has cognitive complexity 109 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb1e562f9461dca6de51b4fc3ac717474ed0495a52919b7fa2d7d9bae0136a04"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.CalculatePoints (cognitive 106): form_Main.CalculatePoints has cognitive complexity 106 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"11838836a414da9b24fdfd82e9e48096874d95a103b6a1c9f38ff885b8816003"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.CalculatePoints (cognitive 106): form_Main.CalculatePoints has cognitive complexity 106 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d32f623c02a83a253736466f070151895453dffd12b2f153e706d9afa8b5fee"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.CalculatePoints (cognitive 106): form_Main.CalculatePoints has cognitive complexity 106 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5635907c56b104541c10d031f16cc9f54713f2aa1dfc0090325d5db795e8fdc"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.CalculatePoints (cognitive 106): form_Main.CalculatePoints has cognitive complexity 106 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1371b258b94b0cc379d8c0dddfb29cdf795250f2a8aa3cdff06c2cbb9bcf985"}},{"ruleId":"D2","level":"warning","message":{"text":"Form_Main.UpdateFamiliesList (cognitive 101): Form_Main.UpdateFamiliesList has cognitive complexity 101 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"20c5f60ec96af4ed993e02b1185b0fceb711bf8cff469a585658e32279d6a514"}},{"ruleId":"D2","level":"warning","message":{"text":"Form_Main.UpdateFamiliesList (cognitive 101): Form_Main.UpdateFamiliesList has cognitive complexity 101 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad4096314668fcdaeba9c7a426971ddd9fa70c59469991a5f6bb8dd94e7dacab"}},{"ruleId":"D2","level":"warning","message":{"text":"Form_Main.UpdateFamiliesList (cognitive 101): Form_Main.UpdateFamiliesList has cognitive complexity 101 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"93231df60193cfb7b2e616d19b057436d1dac135af8c5ddcbadb4ba68ce6380d"}},{"ruleId":"D2","level":"warning","message":{"text":"Form_Main.UpdateFamiliesList (cognitive 101): Form_Main.UpdateFamiliesList has cognitive complexity 101 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"0add9ab921918ef798396bab255bf9cbd249047b1d9e8785e507a0fe400e02ca"}},{"ruleId":"D2","level":"warning","message":{"text":"clsExcel.GetHeaderData (cognitive 93): clsExcel.GetHeaderData has cognitive complexity 93 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"85a680d4937b2c98c6d16d6cff8664422995573b41f8f38672ed6e59c3e1c05e"}},{"ruleId":"D2","level":"warning","message":{"text":"D9B42C3FEA6F4F9E8E1B62E993AA2512.Execute (cognitive 93): D9B42C3FEA6F4F9E8E1B62E993AA2512.Execute has cognitive complexity 93 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"bac6d3483779c4d23866ed88527ba38aeef999c5bf4914366cb0410b624840fd"}},{"ruleId":"D2","level":"warning","message":{"text":"form_PlacePointsFromFile.PlacePoints (cognitive 93): form_PlacePointsFromFile.PlacePoints has cognitive complexity 93 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5f844a56f6ed927a1555e5063046e6debd174214332a481f7b2797defc9e58b"}},{"ruleId":"D2","level":"warning","message":{"text":"clsExcel.GetHeaderData (cognitive 93): clsExcel.GetHeaderData has cognitive complexity 93 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf62a0a303101975684e6a2bc9a35c12efa12d54babbbc4e65d551839bcec1f7"}},{"ruleId":"D2","level":"warning","message":{"text":"D9B42C3FEA6F4F9E8E1B62E993AA2512.Execute (cognitive 93): D9B42C3FEA6F4F9E8E1B62E993AA2512.Execute has cognitive complexity 93 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"73a629514d1739de99bd0f54d5d9c2e7b3f0763b7049117a3f83a2221826f0a9"}},{"ruleId":"D2","level":"warning","message":{"text":"form_PlacePointsFromFile.PlacePoints (cognitive 93): form_PlacePointsFromFile.PlacePoints has cognitive complexity 93 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"35abdb7a5c8e20e432bf0891616532f581a04e9bcf413a95f1be3954c56bcfb0"}},{"ruleId":"D2","level":"warning","message":{"text":"clsExcel.GetHeaderData (cognitive 93): clsExcel.GetHeaderData has cognitive complexity 93 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"e17f97331be78f0ede86d3e8a3b128cea59351b624ad541a8fd6ab5b70f5f694"}},{"ruleId":"D2","level":"warning","message":{"text":"D9B42C3FEA6F4F9E8E1B62E993AA2512.Execute (cognitive 93): D9B42C3FEA6F4F9E8E1B62E993AA2512.Execute has cognitive complexity 93 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"c762865b67d34c3b222fdfa6d36e929f590f5401c1f44a9fe554bccaf97a63ea"}},{"ruleId":"D2","level":"warning","message":{"text":"form_PlacePointsFromFile.PlacePoints (cognitive 93): form_PlacePointsFromFile.PlacePoints has cognitive complexity 93 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"5be15ba993733e01e7b4d22dcd1ae854c7a067908e0fe015c7410ceb95199511"}},{"ruleId":"D2","level":"warning","message":{"text":"clsExcel.GetHeaderData (cognitive 93): clsExcel.GetHeaderData has cognitive complexity 93 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"4969b6512a772f0fbb896bc1171898fe5b491b371b529f230392109d12ac64d3"}},{"ruleId":"D2","level":"warning","message":{"text":"D9B42C3FEA6F4F9E8E1B62E993AA2512.Execute (cognitive 93): D9B42C3FEA6F4F9E8E1B62E993AA2512.Execute has cognitive complexity 93 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"6109646166acd74027883a8f3823b52303087c2af5c269a2a2401501cae016f1"}},{"ruleId":"D2","level":"warning","message":{"text":"form_PlacePointsFromFile.PlacePoints (cognitive 93): form_PlacePointsFromFile.PlacePoints has cognitive complexity 93 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"6176572ea2582d3adea3b0ed51b9357f740b501a802bdd6f00dc7b1207ddf32d"}},{"ruleId":"D2","level":"warning","message":{"text":"form_ExportPoints.New.ctor (cognitive 90): form_ExportPoints.New.ctor has cognitive complexity 90 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"ede2ba308623fe509a45568e5c92b10c4110f10d0d8c2525590da6059c1dbc67"}},{"ruleId":"D2","level":"warning","message":{"text":"form_ExportPoints.New.ctor (cognitive 90): form_ExportPoints.New.ctor has cognitive complexity 90 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad5f86f85e938cca70862514624f8a60ddb5371d6e1301162ee25f9c50c67cea"}},{"ruleId":"D2","level":"warning","message":{"text":"form_ExportPoints.New.ctor (cognitive 90): form_ExportPoints.New.ctor has cognitive complexity 90 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"387d8efc49df80739e63e1160f76df261a389a249214841d5ad1ee4e429703eb"}},{"ruleId":"D2","level":"warning","message":{"text":"form_ExportPoints.New.ctor (cognitive 90): form_ExportPoints.New.ctor has cognitive complexity 90 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"41e945ede0b7f0483eefdb32283125dd12be476c9adeb80d1d2737ad3503f0df"}},{"ruleId":"D2","level":"warning","message":{"text":"MultiSelectTreeview.SelectNode (cognitive 89): MultiSelectTreeview.SelectNode has cognitive complexity 89 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e577952a43cb6ab3c2ac058f0aac3ba95c5e28ee23737be3349e358944ec020"}},{"ruleId":"D2","level":"warning","message":{"text":"MultiSelectTreeview.SelectNode (cognitive 89): MultiSelectTreeview.SelectNode has cognitive complexity 89 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"abc667f1948082686b581a09def91c4b492fee36daa39ed9f2f47c164a7de97c"}},{"ruleId":"D2","level":"warning","message":{"text":"MultiSelectTreeview.SelectNode (cognitive 89): MultiSelectTreeview.SelectNode has cognitive complexity 89 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"6894c8af2f3447376fbd666f3de8b450c77580d232ff777e69a65e1a2b75bd4d"}},{"ruleId":"D2","level":"warning","message":{"text":"MultiSelectTreeview.SelectNode (cognitive 89): MultiSelectTreeview.SelectNode has cognitive complexity 89 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ff92df2daf6851bed625e53883b07478804ff2900099fcc9080a97ee0314911"}},{"ruleId":"D2","level":"warning","message":{"text":"clsReportingData.New.ctor (cognitive 87): clsReportingData.New.ctor has cognitive complexity 87 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c425df7336f132c564bbb1808ca3633ff7a89433ca6556318d480c3fb1c3a32"}},{"ruleId":"D2","level":"warning","message":{"text":"clsReportingData.New.ctor (cognitive 87): clsReportingData.New.ctor has cognitive complexity 87 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0cfc2712ff82e76939ce97c4c18345649dc05277749d7b68d1733921dffc179"}},{"ruleId":"D2","level":"warning","message":{"text":"clsReportingData.New.ctor (cognitive 87): clsReportingData.New.ctor has cognitive complexity 87 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a5363eec9425658d8f70212f312781df990fc88c547ab99db66239bc11e6a61"}},{"ruleId":"D2","level":"warning","message":{"text":"clsReportingData.New.ctor (cognitive 87): clsReportingData.New.ctor has cognitive complexity 87 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"87c3b37c2b1827888f374d18845d968dfc8bc641f9fde2a9bd864a25a49dddb1"}},{"ruleId":"D2","level":"warning","message":{"text":"form_RoomMasses.GenerateMasses (cognitive 83): form_RoomMasses.GenerateMasses has cognitive complexity 83 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a49e6c861401189e7c84b96c3aea6f1e1e4aec14dbd47753776e2a7c71227ec"}},{"ruleId":"D2","level":"warning","message":{"text":"form_RoomMasses.GenerateMasses (cognitive 83): form_RoomMasses.GenerateMasses has cognitive complexity 83 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"49bf2c27b828387192d3ffbb32dc4d54646b601dcb01ed1184c64a3fe9dc4fee"}},{"ruleId":"D2","level":"warning","message":{"text":"form_RoomMasses.GenerateMasses (cognitive 83): form_RoomMasses.GenerateMasses has cognitive complexity 83 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcd3f1d4d4b186815d11b8300a595110dc6b1779617b0e92b006cc67fb6d864b"}},{"ruleId":"D2","level":"warning","message":{"text":"form_RoomMasses.GenerateMasses (cognitive 83): form_RoomMasses.GenerateMasses has cognitive complexity 83 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"c606f28418ce5e67347b2b50f57c8b0b5e7a01a95557eb117051049dd6a2d9e8"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.DisplayDoorItems (cognitive 81): form_Main.DisplayDoorItems has cognitive complexity 81 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"714c9c0c0218ce40b92e95dad414b3d8f06c8952c82f45589cad9abdfb3a3330"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.DisplayDoorItems (cognitive 81): form_Main.DisplayDoorItems has cognitive complexity 81 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd39402e143adba97cc302d463685110f842121af466ef7ab24818fb4b668b05"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.DisplayDoorItems (cognitive 81): form_Main.DisplayDoorItems has cognitive complexity 81 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"be4e3fc819693000a91def86bc3b0203ba1a3fb48afcdc009987a2263b377a4e"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.DisplayDoorItems (cognitive 81): form_Main.DisplayDoorItems has cognitive complexity 81 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fcbf704c0c880d1991c8e84085f41caa5bbfce439d23955a7d16c51104775f0"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.DuplicateViews (cognitive 80): form_Main.DuplicateViews 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":"2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f817be70d5ecf3b3c24cb42a17c205105f1d4380c8e21d6b60529aa4f414057"}},{"ruleId":"D2","level":"warning","message":{"text":"form_DataManager.UpdatePoints (cognitive 80): form_DataManager.UpdatePoints 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":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"65189519b316a232442fbd83f5a81bf8ebe46255015f1475c7f1b2498dbffb50"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.DuplicateViews (cognitive 80): form_Main.DuplicateViews 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":"2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"efc5fe2d1d0199eca7a6ce906f4b16aaef2c3a6670c2adcba7522434ea28ed59"}},{"ruleId":"D2","level":"warning","message":{"text":"form_DataManager.UpdatePoints (cognitive 80): form_DataManager.UpdatePoints 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":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"552ed86196d245b710a23db465177ef2f792c8399b9cac1f4f68a0ba4c7abf7b"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.DuplicateViews (cognitive 80): form_Main.DuplicateViews 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":"2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e1fc640243a82d4c5261ba9a560326adfdc0bf7db2258afe9bb5d50672d1b99"}},{"ruleId":"D2","level":"warning","message":{"text":"form_DataManager.UpdatePoints (cognitive 80): form_DataManager.UpdatePoints 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":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7a09cc5f3310339904e8307fbe900821fae45c25b9ee4574d64f031a0915eb6"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.DuplicateViews (cognitive 80): form_Main.DuplicateViews 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":"2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"082385611587847c463c0a64b6e139a87807c81e8affbe2a073ab5168231959c"}},{"ruleId":"D2","level":"warning","message":{"text":"form_DataManager.UpdatePoints (cognitive 80): form_DataManager.UpdatePoints 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":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"44d97a19c12e4a4f2f70310ee2134a005f40159dfb6b39e89e1995737c86664e"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.ProcessData (cognitive 79): form_Main.ProcessData has cognitive complexity 79 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"646b8d436878ea6767a490b1cac9e38d12dc8eb07b435e1d96f631ee34cb7cdc"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.ProcessData (cognitive 79): form_Main.ProcessData has cognitive complexity 79 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"feea5e0ff8bad5bb4b861326d01c4e956a295903929725c3c9e1f0af0d12829a"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.ProcessData (cognitive 79): form_Main.ProcessData has cognitive complexity 79 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f22fbfa2d34e18249111983e694f426349729e31b442f67f9b4fe3e696fb209"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.ProcessData (cognitive 79): form_Main.ProcessData has cognitive complexity 79 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"aecfdb665ea2195daf65392edfeced01afa287c29cb82a8d6f075b011dadf088"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.buttonOk_Click (cognitive 78): form_Main.buttonOk_Click has cognitive complexity 78 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a7f77be63de5d8ed829e1b24065b23d7403a2bfef16ecce89dbce59aa227395"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.buttonOk_Click (cognitive 78): form_Main.buttonOk_Click has cognitive complexity 78 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3e13eadf0eee5b1ee62b255dc8096614163fca62cbc68169e2d26f15fdada73"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.buttonOk_Click (cognitive 78): form_Main.buttonOk_Click has cognitive complexity 78 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bf2235239c2a552e1811725e06c28b6e3771ff7eb76a57de2a76cd456dca08e"}},{"ruleId":"D2","level":"warning","message":{"text":"clsExcel.UpdateWorksheetFromArray (cognitive 77): clsExcel.UpdateWorksheetFromArray has cognitive complexity 77 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":704}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc562f978aaf1b9cc13b238cdaa3ebcf30b180e247300573dee396808a588eb3"}},{"ruleId":"D2","level":"warning","message":{"text":"clsExcel.UpdateWorksheetFromArray (cognitive 77): clsExcel.UpdateWorksheetFromArray has cognitive complexity 77 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":704}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e8e6abf0565f578799071e7ff60a51cc632beebe2b1af337254d3924cf1e77f"}},{"ruleId":"D2","level":"warning","message":{"text":"clsExcel.UpdateWorksheetFromArray (cognitive 77): clsExcel.UpdateWorksheetFromArray has cognitive complexity 77 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":704}}}],"partialFingerprints":{"codehealthFindingId/v1":"fefd8a125bdd927cdda6c4bbea25a8fdd04cb1826e74076f26b2b65aee13909c"}},{"ruleId":"D2","level":"warning","message":{"text":"clsExcel.UpdateWorksheetFromArray (cognitive 77): clsExcel.UpdateWorksheetFromArray has cognitive complexity 77 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":704}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8df38719690249d246e4ad8a2169b8269cb0a50eb5936ef51db05b4bad9c702"}},{"ruleId":"D2","level":"warning","message":{"text":"clsIoIni.Setup (cognitive 75): clsIoIni.Setup has cognitive complexity 75 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"3af0f194850b49ce0ccb39f550d0f708e6c7bc6a222ceaede707c31007beb7bd"}},{"ruleId":"D2","level":"warning","message":{"text":"clsIoIni.Setup (cognitive 75): clsIoIni.Setup has cognitive complexity 75 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f9ba548c59ab76a317b1a339402d9fc77896c20cf2bca90671868793a5a5b3b"}},{"ruleId":"D2","level":"warning","message":{"text":"clsIoIni.Setup (cognitive 75): clsIoIni.Setup has cognitive complexity 75 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6be9883661e0a76deadbb3b8ba7feb23fc676a4ebe463433760d2da5372ab91"}},{"ruleId":"D2","level":"warning","message":{"text":"clsIoIni.Setup (cognitive 75): clsIoIni.Setup has cognitive complexity 75 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca8335ed462de7b3ad7708ed0fcdcbc51332fa496beb236e845078f84a577184"}},{"ruleId":"D2","level":"warning","message":{"text":"clsExcel.FillExcelWorksheetFromDataTable (cognitive 74): clsExcel.FillExcelWorksheetFromDataTable has cognitive complexity 74 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f6329637c02bc0cf8c47701347581b21e484d7e50154459158fafc23fc22280"}},{"ruleId":"D2","level":"warning","message":{"text":"clsExcel.FillExcelWorksheetFromDataTable (cognitive 74): clsExcel.FillExcelWorksheetFromDataTable has cognitive complexity 74 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba793542f67e8f86dce0279772daa0d89b35577d41a0778360e5abc66591a742"}},{"ruleId":"D2","level":"warning","message":{"text":"clsExcel.FillExcelWorksheetFromDataTable (cognitive 74): clsExcel.FillExcelWorksheetFromDataTable has cognitive complexity 74 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"4421779f9092eeabc8e7c4fd81347b9362f923ff74383f50e33b30f6fb7d83fc"}},{"ruleId":"D2","level":"warning","message":{"text":"clsExcel.FillExcelWorksheetFromDataTable (cognitive 74): clsExcel.FillExcelWorksheetFromDataTable has cognitive complexity 74 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ac2fa12e3c61cc1ce599991624c2c76a9874bc72408a4b63598d8a7147dc8db"}},{"ruleId":"D2","level":"warning","message":{"text":"D9B42C3FEA6F4F9E8E1B62E993AA2513.Execute (cognitive 73): D9B42C3FEA6F4F9E8E1B62E993AA2513.Execute has cognitive complexity 73 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"891bdc3ec3fbc1f4ee470aaffc569428fcea74f3f2b739631bcccb4e57d97136"}},{"ruleId":"D2","level":"warning","message":{"text":"D9B42C3FEA6F4F9E8E1B62E993AA2513.Execute (cognitive 73): D9B42C3FEA6F4F9E8E1B62E993AA2513.Execute has cognitive complexity 73 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"95fb97e977fc31260da05df5cbf6f0c3d2f000f9af8e796e307a8782a261b4f0"}},{"ruleId":"D2","level":"warning","message":{"text":"D9B42C3FEA6F4F9E8E1B62E993AA2513.Execute (cognitive 73): D9B42C3FEA6F4F9E8E1B62E993AA2513.Execute has cognitive complexity 73 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"2792187994d2040025f39ce2b6ca31d2c9f58d8e4bd81173af1414c6f7647ce7"}},{"ruleId":"D2","level":"warning","message":{"text":"D9B42C3FEA6F4F9E8E1B62E993AA2513.Execute (cognitive 73): D9B42C3FEA6F4F9E8E1B62E993AA2513.Execute has cognitive complexity 73 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b2463225be6a80281e90d9e715421ddaf81abcc137bb79f4a51ba7dc6e133c9"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.UpdateMassParameters (cognitive 70): clsSettings.UpdateMassParameters has cognitive complexity 70 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"5da377d1840a52700033f11db50404689d103f6c58f369059e4c253683d09f03"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.UpdateMassParameters (cognitive 70): clsSettings.UpdateMassParameters has cognitive complexity 70 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"f922a37f401b130a85115c4f7ba6d49860941b89b9b7d03ad25038a6583971bd"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.UpdateMassParameters (cognitive 70): clsSettings.UpdateMassParameters has cognitive complexity 70 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"049954e1094bd90a052a30100341d15fd4e0158efd5af0a1f0a44befd321439d"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.UpdateMassParameters (cognitive 70): clsSettings.UpdateMassParameters has cognitive complexity 70 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c4173d0a9d22e705841211311471f30e9881a124db50ac3d39cfee9f6f09776"}},{"ruleId":"D2","level":"warning","message":{"text":"MultiSelectTreeview.OnKeyDown (cognitive 69): MultiSelectTreeview.OnKeyDown has cognitive complexity 69 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"9501dfccbdd9d0d19f5265ccfb5b21f4ad68b9e8c503df78eeb32eee24ec19c3"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.buttonOk_Click (cognitive 69): form_Main.buttonOk_Click has cognitive complexity 69 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c1826558820a5b3f386c88392cb5cb30805413083449032af4ed8c1fb7a54d8"}},{"ruleId":"D2","level":"warning","message":{"text":"MultiSelectTreeview.OnKeyDown (cognitive 69): MultiSelectTreeview.OnKeyDown has cognitive complexity 69 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5bcf936636b10f3aa3f2d00cae86bf73da41cb0ea80a9e1f2ba2fa768807f6e"}},{"ruleId":"D2","level":"warning","message":{"text":"MultiSelectTreeview.OnKeyDown (cognitive 69): MultiSelectTreeview.OnKeyDown has cognitive complexity 69 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"53eed8d9736d0d42b84fb8cadce2fc26c685575be94914293e7025319b3e2a10"}},{"ruleId":"D2","level":"warning","message":{"text":"MultiSelectTreeview.OnKeyDown (cognitive 69): MultiSelectTreeview.OnKeyDown has cognitive complexity 69 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b3d091eb8da94dddb488dc222dfc77c27d9f8308a37a55b3d2c1807b3d0338d"}},{"ruleId":"D2","level":"warning","message":{"text":"clsReportingData.New.ctor (cognitive 68): clsReportingData.New.ctor 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":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e9bf8aa5afc43277a2f13e1f1755fc011738ab6ffadd7f0237cabd6254bd9ba"}},{"ruleId":"D2","level":"warning","message":{"text":"clsReportingData.New.ctor (cognitive 68): clsReportingData.New.ctor 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":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"0525610bc04991b1c0584e443ba4b4c52fb57cfd2afc3a730755d0b46328eed8"}},{"ruleId":"D2","level":"warning","message":{"text":"clsReportingData.New.ctor (cognitive 68): clsReportingData.New.ctor 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":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a8d5c977235719e40433b9989002d5015d207f23f0a99925fceb939bb536466"}},{"ruleId":"D2","level":"warning","message":{"text":"clsReportingData.New.ctor (cognitive 68): clsReportingData.New.ctor 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":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc8ce18bcb97e8e04c24da76ba16c71be06f65c4c01a77692796d701b79add61"}},{"ruleId":"D2","level":"warning","message":{"text":"form_ImportMain.Button_Import_Click (cognitive 65): form_ImportMain.Button_Import_Click 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":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d9739217eabff25344e4b339a596786a60726f600b318d1bc2bb73935efeff4"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.RenumberDoors (cognitive 65): form_Main.RenumberDoors 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":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd3c0b4d3df97edceaa9af3a2212796167bda0ddcf4c43730df1d7d19d0ea1f5"}},{"ruleId":"D2","level":"warning","message":{"text":"form_ImportMain.Button_Import_Click (cognitive 65): form_ImportMain.Button_Import_Click 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":"2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"44591ebef4f81897daad9e8e06a62657a8383fb2a014bc2de2271a33f9d68a6d"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.RenumberDoors (cognitive 65): form_Main.RenumberDoors 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":"2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebd22c2f879bec571434093db6c1c235b5eb2ff13ebeb6c5f070932032a81ee6"}},{"ruleId":"D2","level":"warning","message":{"text":"form_ImportMain.Button_Import_Click (cognitive 65): form_ImportMain.Button_Import_Click 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":"2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3f3da528b99038cc80a88279456741d5af261417fd9d99854a263d50269ce41"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.RenumberDoors (cognitive 65): form_Main.RenumberDoors 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":"2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e34459f899872a90c85cd836e848c0d54f356ba0f6b63d323cc3cbbc394a472"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.RenumberDoors (cognitive 65): form_Main.RenumberDoors 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":"2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"89e45233f73ead5a109acadb10ed6615032fa34a4835ab1d4147e9fedbeb8cce"}},{"ruleId":"D2","level":"warning","message":{"text":"form_ImportMain.Button_Import_Click (cognitive 65): form_ImportMain.Button_Import_Click 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":"2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"60a667bfa7eff778ae87ea20a5a722c82f596ea4a5c60fee1895f5d7d3dac5eb"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.form_Main_Shown (cognitive 63): form_Main.form_Main_Shown has cognitive complexity 63 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"1638135650df3a5b499a284219fbf8efa38c0d2a6a5115171772c3ff8ed7454d"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.form_Main_Shown (cognitive 63): form_Main.form_Main_Shown has cognitive complexity 63 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"3078b55f8b4f58c29349aed0aaa61e213e0c7820c6c0444103f7e18365158b6b"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.form_Main_Shown (cognitive 63): form_Main.form_Main_Shown has cognitive complexity 63 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"56a5ab01e5f46063be78434a3124a28702c7fefcee41b24e63c7d655f6930426"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.form_Main_Shown (cognitive 63): form_Main.form_Main_Shown has cognitive complexity 63 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"e90478992f745b4678f4ed9307af1053c47cc58a720a506ab7a588ce1f0585b3"}},{"ruleId":"D2","level":"warning","message":{"text":"clsReportingData.New.ctor (cognitive 60): clsReportingData.New.ctor has cognitive complexity 60 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c0b54f478cc0935dde9f87dfdb8c1db78dcb260d376a2fbed8d31209ca3e8ef"}},{"ruleId":"D2","level":"warning","message":{"text":"clsReportingData.New.ctor (cognitive 60): clsReportingData.New.ctor has cognitive complexity 60 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"222dc164086b264289f93e58a70ba8effca777dc9601d732438ab7dd86d38dd9"}},{"ruleId":"D2","level":"warning","message":{"text":"clsReportingData.New.ctor (cognitive 60): clsReportingData.New.ctor has cognitive complexity 60 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7a1b5c6d55e1cc01c1a306fa0b30c4a9e81cae11f05392ef6bd104cc06fbfb8"}},{"ruleId":"D2","level":"warning","message":{"text":"clsReportingData.New.ctor (cognitive 60): clsReportingData.New.ctor has cognitive complexity 60 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"b62590b0772737a2061c59c32f916e708ddc1db766144f31d2982979be710ac3"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Sync.SyncExcelAndRevit (cognitive 59): form_Sync.SyncExcelAndRevit 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":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2a233d2a039fdbf5e2cd929f8dfa6994cd32988365ba0ed14df3855acf423c8"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Sync.SyncExcelAndRevit (cognitive 59): form_Sync.SyncExcelAndRevit 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":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"143f156552dd82e869ba2f49f5bc9c2084e4b6815a0e60c03dae24f8d9adbe7d"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Sync.SyncExcelAndRevit (cognitive 59): form_Sync.SyncExcelAndRevit 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":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb02f1072e68eb6fce3361eff368de4db8a0b33e47b48d328ac7f037bdb47c37"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Sync.SyncExcelAndRevit (cognitive 59): form_Sync.SyncExcelAndRevit 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":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"5328fe7d27af940c902a8c90f84c72f1c57cf36c662064dee9b330e1953a85c9"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.DuplicateViews (cognitive 58): form_Main.DuplicateViews 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":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1b462b8def16628734ab2b7d583246d70ea97ca18921b441a3a7535eaf34f93"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.DuplicateViews (cognitive 58): form_Main.DuplicateViews 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":"2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ee4bff48fd6ad9fb7930fc593cee55e1f45ff9d66aabf71c05bc296b00c2688"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.DuplicateViews (cognitive 58): form_Main.DuplicateViews 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":"2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecef83795043efdba95b3ca0b982f87ae92cc32babd9dc3d676b49d549edca48"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.DuplicateViews (cognitive 58): form_Main.DuplicateViews 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":"2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"dce9b15c9e824f8cab131ff6152c7135100204c4c6ed1491aad0392e3010277d"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.LoadSharedParameters (cognitive 57): form_Main.LoadSharedParameters has cognitive complexity 57 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ae2af0708324a457fac6bbdadc406ea63bea3e37ddb7ff2029c34cf1196de20"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.LoadSharedParameters (cognitive 57): form_Main.LoadSharedParameters has cognitive complexity 57 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e9cbcf6373be0d4fdf401e923b6f09269793db6a87f02eedae14a5ff4437817"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.LoadSharedParameters (cognitive 57): form_Main.LoadSharedParameters has cognitive complexity 57 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"c967150590c02b2519eba0884fac8a644a7780b55aabe4f7cea2e035c2633de7"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.LoadSharedParameters (cognitive 57): form_Main.LoadSharedParameters has cognitive complexity 57 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1d7fa37727972a1411a213302fe93b69872825fe9a4a32062a69b84d2dcea50"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Export.ButtonOk_Click (cognitive 55): form_Export.ButtonOk_Click has cognitive complexity 55 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":648}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c74c1aafafe1802d9b12cc7c0c60e5a0f748ffe8412a6c6acca544fd8a00e22"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Export.ButtonOk_Click (cognitive 55): form_Export.ButtonOk_Click has cognitive complexity 55 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":648}}}],"partialFingerprints":{"codehealthFindingId/v1":"66946d3d5fef540a31320a68c3adbe8746838a089e8ee529ea086fc90956dcd7"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Export.ButtonOk_Click (cognitive 55): form_Export.ButtonOk_Click has cognitive complexity 55 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":648}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f95aff6df8959a61acd7b80751e93d1ca688cf842e7a4815f28de9e63b9fe29"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Export.ButtonOk_Click (cognitive 55): form_Export.ButtonOk_Click has cognitive complexity 55 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":648}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce72d6f5782691395ec1a287a0813a9912f3e5fac80df690036b60c2b5733f7b"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.makeViews (cognitive 52): form_Main.makeViews has cognitive complexity 52 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbb8a009fc48fdc09a8790efa347d9bfeb12b4f78b8ba0bd802e216f516a701a"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.makeViews (cognitive 52): form_Main.makeViews has cognitive complexity 52 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"53ba85f3c97dbe045995ea1b9bbee08d46fa2c154f2bb13c5e021543555ff2ad"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.makeViews (cognitive 52): form_Main.makeViews has cognitive complexity 52 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"09653ba45157056358f9030c70dd6ec610dea67ede10565118900e7e76bbb717"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.makeViews (cognitive 52): form_Main.makeViews has cognitive complexity 52 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"56e9899843f1b06c3ca3d8ac66ab703ad2927a7686af731da2f0c1b507e32c71"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Parameters.LoadDatagrid (cognitive 51): form_Parameters.LoadDatagrid 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":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6133ecfeef523191be9355d4b43a24cdf6b2f78a4d6892f279f18ba1aa6dae5"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Parameters.LoadDatagrid (cognitive 51): form_Parameters.LoadDatagrid 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":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e0b94c7c99f5fe4df665a1d9fac9c6ef9043a6a60f680d2106b28f5ce24dec6"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Parameters.LoadDatagrid (cognitive 51): form_Parameters.LoadDatagrid 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":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"4209f1c7ea770e078a29d9a5aafd4e47876c185c2b39a43053d005627cd66c39"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Parameters.LoadDatagrid (cognitive 51): form_Parameters.LoadDatagrid 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":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"613a9284883acde0d849c9a3584aca69f3550d339492e50fab32c757ec2eee85"}},{"ruleId":"D2","level":"warning","message":{"text":"clsIoConfig.ReadData (cognitive 50): clsIoConfig.ReadData has cognitive complexity 50 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3f95c017ced0dc3a4b612806e8534005d6ef307226c5f5d05bd0b50600a0bcb"}},{"ruleId":"D2","level":"warning","message":{"text":"clsIoConfig.ReadData (cognitive 50): clsIoConfig.ReadData has cognitive complexity 50 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d1ef3fa519f8e5ab8137b10d0c46b2259f48d2e680943164c5529c08940cf9d"}},{"ruleId":"D2","level":"warning","message":{"text":"clsIoConfig.ReadData (cognitive 50): clsIoConfig.ReadData has cognitive complexity 50 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"86050b69b34c20e595bb47a116b8a01653bedd938da9b72782b379bcd2ace4b8"}},{"ruleId":"D2","level":"warning","message":{"text":"clsIoConfig.ReadData (cognitive 50): clsIoConfig.ReadData has cognitive complexity 50 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"62d252844bf75854498b72db601b5646849cccd7ccead16f0c56623336535fd3"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Data.ShowAsCategoryBasic (cognitive 48): form_Data.ShowAsCategoryBasic 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":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"11c47facfedd23560454b9849d06700c128cd1908b6f4ff4f412eedc6ea308ed"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Data.ButtonSelect_Click (cognitive 48): form_Data.ButtonSelect_Click 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":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":611}}}],"partialFingerprints":{"codehealthFindingId/v1":"96cd8eb1ac014e50217c3e8d347590b632b48bd18366b2e4d5ec67490620f9ff"}},{"ruleId":"D2","level":"warning","message":{"text":"form_ExportPoints.LoadPreviewData (cognitive 48): form_ExportPoints.LoadPreviewData 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":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"84d4a68df0bc38913d7c42ee98571a7cc981e018703e121396f418339694c84c"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Data.ShowAsCategoryBasic (cognitive 48): form_Data.ShowAsCategoryBasic 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":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc10a1841582377b47938b45dbf37ae92ee9a92ba10e385434997bdeaa094463"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Data.ButtonSelect_Click (cognitive 48): form_Data.ButtonSelect_Click 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":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":611}}}],"partialFingerprints":{"codehealthFindingId/v1":"25a81df45d2b16f26f698d934648a8cb284d1d8fd8108f79aba7a4af76c59a7b"}},{"ruleId":"D2","level":"warning","message":{"text":"form_ExportPoints.LoadPreviewData (cognitive 48): form_ExportPoints.LoadPreviewData 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":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"90fd2a7f2868e53ff6c4ffe6e2b9b930932ea99c1f4b6f5219c507b334b7e7bd"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Data.ShowAsCategoryBasic (cognitive 48): form_Data.ShowAsCategoryBasic 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":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"69be7e27b5314cbcd415825342aa8b60fb27f22963338d214a18716099a785b6"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Data.ButtonSelect_Click (cognitive 48): form_Data.ButtonSelect_Click 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":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":611}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ff5b877650e9f056fe1dfcacaae16ced7a3e4b1c869bf55918b6a7a2b54d02e"}},{"ruleId":"D2","level":"warning","message":{"text":"form_ExportPoints.LoadPreviewData (cognitive 48): form_ExportPoints.LoadPreviewData 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":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"cae0a0b25b2d000ad2cd20d0d1b689a485fd414fdba95e5a89785d39eedfaa9d"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Data.ShowAsCategoryBasic (cognitive 48): form_Data.ShowAsCategoryBasic 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":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fd3f98a086f2329062e58709629601de4da7188fd1397f5f78e6b17429a138a"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Data.ButtonSelect_Click (cognitive 48): form_Data.ButtonSelect_Click 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":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":611}}}],"partialFingerprints":{"codehealthFindingId/v1":"46561cd9f91dcc5bfa9b5648652d960baaea6a69a267f975a41fad283d1a8ef4"}},{"ruleId":"D2","level":"warning","message":{"text":"form_ExportPoints.LoadPreviewData (cognitive 48): form_ExportPoints.LoadPreviewData 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":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"b76c7d1464df3d529acce713ea1ed938318605078cff46f0d2e5f9f6d5f31947"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetViews (cognitive 45): clsSettings.GetViews 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":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"db1eb731b2ba2cf6666d110429bf901667f807aa52a2575c25755ae8eee46266"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetViews (cognitive 45): clsSettings.GetViews 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":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"761cada0e4fa72c5a4a26f84c0cdcfadd7f67ce8dba5772e360001202077b242"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetViews (cognitive 45): clsSettings.GetViews 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":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccc6b9d7811c6b123a00a394504f62f46651580a075d8788c0b1fb1f43616f9a"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetViews (cognitive 45): clsSettings.GetViews 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":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ce1e97d9e06978edfdc28a86b584f37e7f44d57f408815fc56877765ca67028"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.RefreshViewList (cognitive 44): form_Main.RefreshViewList has cognitive complexity 44 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"56a05a705783c35839c7d2aae2d11c2163b6928cc5f57b52a76ff21b51dbc4c1"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.doSetup (cognitive 44): clsSettings.doSetup has cognitive complexity 44 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"d50d9688dbfa4290d761beb723bf9b3ea83de91c8b7d8f1e173f51a2a5550471"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.RefreshViewList (cognitive 44): form_Main.RefreshViewList has cognitive complexity 44 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"b14b9ebb3173a1c4ffde2fa4907074ec1d398b5dec09951c04272e2d1599aa09"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.RefreshViewList (cognitive 44): form_Main.RefreshViewList has cognitive complexity 44 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"77d33c57dca013d7c2db953feec4caa332f37622c3619553885ea1c5f3264461"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.doSetup (cognitive 44): clsSettings.doSetup has cognitive complexity 44 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"2468255280fe096ed6c2ec16a321fdddbcb6ce82772330dbbd7e410b6adb0cef"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.RefreshViewList (cognitive 44): form_Main.RefreshViewList has cognitive complexity 44 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"2debfbcc178270d4edcef95b6aac097933a46c37d2919c673632708ed13d397a"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.RefreshViewList (cognitive 44): form_Main.RefreshViewList has cognitive complexity 44 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcbfb3da96a15501e5ca1707d172a02dbadd379147d0a68553aa463b95f6ad3d"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.doSetup (cognitive 44): clsSettings.doSetup has cognitive complexity 44 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"5251c4ea6847b4e401c6247c6f0e0c14e733a4d3cddbe844a336ac5e9a9e743b"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.RefreshViewList (cognitive 44): form_Main.RefreshViewList has cognitive complexity 44 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"27d0f0cb6c62554507c6ebb938005e77e37f67229f1b9f387d5cb22c236d6129"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.RefreshViewList (cognitive 44): form_Main.RefreshViewList has cognitive complexity 44 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"82add8ef65de85dadb3a8a67e888ac381208836fb816fc360715572944069bc4"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.doSetup (cognitive 44): clsSettings.doSetup has cognitive complexity 44 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"312274ee859fb3043eab47d88618daf24f83d18c19efb6a471057201b3a6b50c"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.RefreshViewList (cognitive 44): form_Main.RefreshViewList has cognitive complexity 44 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dc1123d99f2267eaf2a1080033e04e6f8f4f7fef0bf4370f2998336c2f5d698"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetWalls (cognitive 43): clsSettings.GetWalls 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":"2015/Case.Directionality/Case.Directionality/Data/clsSettings.vb"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"7be5c7d1e2ab6a6dadff1c6851a5c83682da37d880d03fbae22b1d4615da7a6d"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetWalls (cognitive 43): clsSettings.GetWalls 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":"2016/Case.Directionality/Case.Directionality/Data/clsSettings.vb"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dd058fd2dabc3a5a0414e9051a7767cf8a017972691412deafb05076522754f"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetWalls (cognitive 43): clsSettings.GetWalls 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":"2017/Case.Directionality/Case.Directionality/Data/clsSettings.vb"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"e708065b9cb5be52480825e40cddc50f1ddde0b44908d466cd4adc89a9acb644"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetWalls (cognitive 43): clsSettings.GetWalls 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":"2018/Case.Directionality/Case.Directionality/Data/clsSettings.vb"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"c42a87fb3c588c2faeae4bb695fe0dcd61479e4e08d01023e8a1f39feba688c1"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Families.doExport (cognitive 42): form_Families.doExport 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":"2015/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"70d5b3d10dd9cf5fe83d61bbd0856eac4d78b989caf517ce2a06adcb7bbfccde"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Families.doExport (cognitive 42): form_Families.doExport 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":"2016/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce125cc08f3bbf8047e6cdbd251fe818be02bd2e9459e4ca61f77816231a336c"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Families.doExport (cognitive 42): form_Families.doExport 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":"2017/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"483aa225ade8bab45496eb2454892fea0aa0e1140f395b7bb4aa6f64361f365e"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Families.doExport (cognitive 42): form_Families.doExport 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":"2018/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"08a6b2511aa21fc7933d512978ba7502918c26b737f22aa9511d5fe4f902102f"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.RenameStuff (cognitive 41): form_Main.RenameStuff 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":"2015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"4046cd43eda9bb8fe50eabe2f06e6f820aabc51de9d1c74665b49cf8dc9cfa6d"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.RenameStuff (cognitive 41): form_Main.RenameStuff 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":"2016/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"4071746a042eb7a0af109cb96b8d61939d6276445f849a7662c181fcc9180871"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.RenameStuff (cognitive 41): form_Main.RenameStuff 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":"2017/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdac80aeeaf14c66d31e2c00dce435e38122e67034771ac11deb4852e78f6745"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.RenameStuff (cognitive 41): form_Main.RenameStuff 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":"2018/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"da4c7957897d6dabee0509c5bff48f17e59f4196ab8f506905a7d1ddabc044cb"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.LoadSharedParameters (cognitive 39): form_Main.LoadSharedParameters 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":"2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff8cd07eead5c3fa393a20485bffb35cbd01c8fb2890880f5ac29bc62266c632"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.LoadSharedParameters (cognitive 39): form_Main.LoadSharedParameters 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":"2016/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"44c5c09795faf454009635ade527e0385bdc0d7566bb9725639152e1e30243eb"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.LoadSharedParameters (cognitive 39): form_Main.LoadSharedParameters 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":"2017/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"efefa9b6f086c6cf568a8b0b9aafbffc901a53049263186b907a095984e4a071"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.LoadSharedParameters (cognitive 39): form_Main.LoadSharedParameters 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":"2018/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"50e867ef43b003ed4d5f8d769b68e98e1abb90163d356041df61d34cc3d63731"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetViews (cognitive 38): clsSettings.GetViews 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":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSettings.vb"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"497bf6c8fb38de805fa003ddcfc95af41d4929c6dd4249e25117db0685fb4908"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetViews (cognitive 38): clsSettings.GetViews 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":"2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSettings.vb"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"141faeda314d2fd297766bddc31ef9e4c9550aa3723a089fd2717983a2808ae6"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetViews (cognitive 38): clsSettings.GetViews 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":"2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSettings.vb"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"723b82eedf3fbe3df4ddda7df4b0c3fe20d58ce987bc9d683f17e923e731c4aa"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetViews (cognitive 38): clsSettings.GetViews 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":"2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSettings.vb"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"d448b2d85c73ed092bcc6a1e19ff0be06bee4779bb4b20722158a057f8509720"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.DeleteCheckedItems (cognitive 37): form_Main.DeleteCheckedItems 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":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"20633683b540173cb9fd4a232caae6384e46ca045db30ea3752e7cb3a1f4c451"}},{"ruleId":"D2","level":"warning","message":{"text":"clsConfiguration.ReadFile (cognitive 37): clsConfiguration.ReadFile 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":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee79d9208d780270938fce41c02a119621a91125134bb4150bc2dd1b0a7fe801"}},{"ruleId":"D2","level":"warning","message":{"text":"clsExcel.FillDataTableFromExcelWorksheet (cognitive 37): clsExcel.FillDataTableFromExcelWorksheet 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":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d773da96a0b7f7df47ceaa2ff99ffc275a283fe98455864bc55594b3fb82e08"}},{"ruleId":"D2","level":"warning","message":{"text":"clsAutomationTest.Test1 (cognitive 37): clsAutomationTest.Test1 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":"2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb73e856bb0eca00f8c364ca10a235247948e4b088fc0f15c97c40789e32678c"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.DeleteCheckedItems (cognitive 37): form_Main.DeleteCheckedItems 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":"2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"0784c529b4b1feeaf2aecd8e02b427a80580e1a70ddace24f72876c029e3a925"}},{"ruleId":"D2","level":"warning","message":{"text":"clsConfiguration.ReadFile (cognitive 37): clsConfiguration.ReadFile 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":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d6829460ae27aba9893a5fc6e965a2457b5d1f2d0170b7da69333c271add79f"}},{"ruleId":"D2","level":"warning","message":{"text":"clsExcel.FillDataTableFromExcelWorksheet (cognitive 37): clsExcel.FillDataTableFromExcelWorksheet 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":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"30d110a73f711872cce6be21839061fcf30ce761f5aad8df8d39afa845edbeaa"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.DeleteCheckedItems (cognitive 37): form_Main.DeleteCheckedItems 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":"2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"c20b7b28a63c8fd1247d18f3f0071a699d99bf9f9f062f8ec64a71641ea67580"}},{"ruleId":"D2","level":"warning","message":{"text":"clsConfiguration.ReadFile (cognitive 37): clsConfiguration.ReadFile 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":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"3590cae50cd30d44e53f90215d57be325a9ed2d84c81a17ff4cc55405bc1e2f0"}},{"ruleId":"D2","level":"warning","message":{"text":"clsExcel.FillDataTableFromExcelWorksheet (cognitive 37): clsExcel.FillDataTableFromExcelWorksheet 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":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ec6722cdbd2a95447a78a10eb2e8672b10bc10d2310f257ac7285cb64f7ffa9"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.DeleteCheckedItems (cognitive 37): form_Main.DeleteCheckedItems 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":"2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"983dca5d76c10ac1915b59f69853f44ab67dd5b22084afed670d462c7a664da4"}},{"ruleId":"D2","level":"warning","message":{"text":"clsConfiguration.ReadFile (cognitive 37): clsConfiguration.ReadFile 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":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"894f7a47978015800a6f9841196c8af9eb51b56d05374278533e66624616ada5"}},{"ruleId":"D2","level":"warning","message":{"text":"clsExcel.FillDataTableFromExcelWorksheet (cognitive 37): clsExcel.FillDataTableFromExcelWorksheet 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":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"8882b1e01da1b7eab45da4a75085f69615be6abc931308e18348624cf2123eaa"}},{"ruleId":"D2","level":"warning","message":{"text":"clsAutomationTest.Test1 (cognitive 37): clsAutomationTest.Test1 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":"2016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5422e63c6b9c9c4f400e952158157c93a1e43c4ca5843ae7010e3abb91d90bd"}},{"ruleId":"D2","level":"warning","message":{"text":"clsAutomationTest.Test1 (cognitive 37): clsAutomationTest.Test1 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":"2017/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"5855cfcb88c3fce4f22c3866c119ee98fdee9f453dd61febd08b05aa027800d1"}},{"ruleId":"D2","level":"warning","message":{"text":"clsAutomationTest.Test1 (cognitive 37): clsAutomationTest.Test1 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":"2018/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"576da4aaa3429c872f4fc64561befc3f8b6463ad409b94ac835c0fa026650598"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.DeleteSelections (cognitive 36): form_Main.DeleteSelections 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":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e588158d3d8dddf3c2ed8a9f175cd264d3556aa1e650e8f4576c1c403e3df33"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Sync.UpdateWorksheetData (cognitive 36): form_Sync.UpdateWorksheetData 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":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":581}}}],"partialFingerprints":{"codehealthFindingId/v1":"446486afe844ee4a30dbb4b2239d49a77362b922d1a59cc89e9e4a9942c3e4d2"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.UpdateAll (cognitive 36): clsSettings.UpdateAll 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":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"79fed04e18950685c5937fa164bf0b72479212833227b4c76d48ca0ccc5d62c5"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Data.ShowAsWorksetsBasic (cognitive 36): form_Data.ShowAsWorksetsBasic 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":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"28804961257ba87568800ec6a5212aa088803363df5d22d07f8e3dfe83cd996c"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.ScanCategories (cognitive 36): clsSettings.ScanCategories 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":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cf17838475143a3fac78b186c329c1de6097944dee07f3ba3b2c8820190e949"}},{"ruleId":"D2","level":"warning","message":{"text":"clsExternalWalls.GetFacingDirection (cognitive 36): clsExternalWalls.GetFacingDirection 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":"2015/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"57e7f425bc9402e82c07e8ef27829d238695e3b1a1c20b08d3c90ed765dc7461"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.DeleteSelections (cognitive 36): form_Main.DeleteSelections 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":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc05ce6192b4f5f0ad31082605778bca22711135e798b746d5801615d64b6107"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Sync.UpdateWorksheetData (cognitive 36): form_Sync.UpdateWorksheetData 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":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":581}}}],"partialFingerprints":{"codehealthFindingId/v1":"421266cc461c456b588e28d6f517d6caefbd38ad993530aa6e7f9d3655bde7a5"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.UpdateAll (cognitive 36): clsSettings.UpdateAll 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":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"7aded0e2ae85d6f22cd75ee20da64f6222fc6a6c894cf78af63d37d8438ef4cb"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Data.ShowAsWorksetsBasic (cognitive 36): form_Data.ShowAsWorksetsBasic 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":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9f646e060985ad8ca7e374ae2e691d0349c0a9e64cfb8aca7710613aae446a1"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.ScanCategories (cognitive 36): clsSettings.ScanCategories 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":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"536011fef6e806b304b3b72896c7acd38207bcdd7fe0a8100aca6f18c3edcc47"}},{"ruleId":"D2","level":"warning","message":{"text":"clsExternalWalls.GetFacingDirection (cognitive 36): clsExternalWalls.GetFacingDirection 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":"2016/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6f42d2d21850875893d57a0832d29b5bf69a328dc76785e7a0a08046e4798a4"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.DeleteSelections (cognitive 36): form_Main.DeleteSelections 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":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b74aab540470194ee0671b9b79f50a9ed739c2481f501a9db9889a3d2d8ea6f"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Sync.UpdateWorksheetData (cognitive 36): form_Sync.UpdateWorksheetData 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":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":581}}}],"partialFingerprints":{"codehealthFindingId/v1":"57befa9fd0bc3e46e057f22c58337f8aa5d5bc6da9ef82fe961e4d7168e21827"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.UpdateAll (cognitive 36): clsSettings.UpdateAll 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":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d9ce3f4a7168dd6648db43e0939baf03a3c782c1790efd7e59fd11801d9f4ed"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Data.ShowAsWorksetsBasic (cognitive 36): form_Data.ShowAsWorksetsBasic 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":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"0826949181b5a25d0b4bc08bc80b58dc7738e55c8ad5b6ae717469399605a554"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.ScanCategories (cognitive 36): clsSettings.ScanCategories 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":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a241075a0b15c019ff820e5f6bb19111bedf1533a8353c84a2574850e6830de"}},{"ruleId":"D2","level":"warning","message":{"text":"clsExternalWalls.GetFacingDirection (cognitive 36): clsExternalWalls.GetFacingDirection 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":"2017/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"70227e527244ca26e009cc5ae73dda82f617c4bd100d534dfa1f2f46bd288202"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.DeleteSelections (cognitive 36): form_Main.DeleteSelections 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":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"08d3abf3b61931e03d95d8628f1fe24de96408417f7071890c37dc61984f1269"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Sync.UpdateWorksheetData (cognitive 36): form_Sync.UpdateWorksheetData 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":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":581}}}],"partialFingerprints":{"codehealthFindingId/v1":"81767b42a0c3b975e3935e138a7705f249b8bbfd46cbb3f3a0671b131e909c44"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.UpdateAll (cognitive 36): clsSettings.UpdateAll 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":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ba5bacb496d49a90aeea43aa9628ff08329ef9f79846ce9d9eb5ef3f9ff0355"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Data.ShowAsWorksetsBasic (cognitive 36): form_Data.ShowAsWorksetsBasic 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":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"690610c18725f3e69926b9d34210f559931c477a07813d3371e4ea7f9dcad040"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.ScanCategories (cognitive 36): clsSettings.ScanCategories 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":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"a912dd86ff5b3baa813777435b06581d824cf2ac88f6fc4615966b02ffa3f427"}},{"ruleId":"D2","level":"warning","message":{"text":"clsExternalWalls.GetFacingDirection (cognitive 36): clsExternalWalls.GetFacingDirection 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":"2018/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"92275c33258539a1a8106d10ddc2bbcb4fe4702bdb6ad112e6f13f90e38be1eb"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.ReplaceStyles (cognitive 35): clsSettings.ReplaceStyles 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":"2015/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e929c9c51c6a4bf2ea2b1967815cb46ea1b143942787dfc31e99dae4190df1f"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.LoadViews (cognitive 35): form_Main.LoadViews 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":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"82b4a1e394017a7d3ed4652601f0d2ea37b972957e938f388efa9f72ffcef26b"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.PlaceFixtures (cognitive 35): clsSettings.PlaceFixtures 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":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbee7ade422f6012f8ff126edca5509788be001dfd9ad691134830bcc5b08060"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.ReplaceStyles (cognitive 35): clsSettings.ReplaceStyles 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":"2016/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcbfbc8f245810cfdf200e9416767ae4d0180962814ef9e540e04197110f6a7e"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.LoadViews (cognitive 35): form_Main.LoadViews 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":"2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"dab06e4decda79f09dcf6e3c5a75d4b29b79c3abf5f21ea44aa600c0fdb2edcb"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.PlaceFixtures (cognitive 35): clsSettings.PlaceFixtures 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":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"56d7d9ff60528075f2ec4f2ac3376360e28deb7d8a2b146299f4a606bffeeb08"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.ReplaceStyles (cognitive 35): clsSettings.ReplaceStyles 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":"2017/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"c987ab44eb2a32fdea31acec87eb35e8c4b8086db43250f75944c3f7e1620ca5"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.LoadViews (cognitive 35): form_Main.LoadViews 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":"2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fab2b05a81c339c09c25dcc012bd844db08dfd1088de5971fabd928cea03040"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.PlaceFixtures (cognitive 35): clsSettings.PlaceFixtures 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":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b97c3517854634a8e2a9fc6ce81d0e9cfd4e07b8ea5fc6afa6a38018d8a03f5"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.ReplaceStyles (cognitive 35): clsSettings.ReplaceStyles 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":"2018/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"19df1eb952b0f3fb99049f6b9e76e2636d343cf82cb32bda81f0bdac0a796931"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.LoadViews (cognitive 35): form_Main.LoadViews 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":"2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"21710da945fe75388e120669172b093d4bb0951db67b7803a7d86339cbf2f88d"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.PlaceFixtures (cognitive 35): clsSettings.PlaceFixtures 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":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"42cc87805c4ed28943e4d22c3c8cfb6d14fe253b6c417f73bb8c9a6b536a76bd"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Rename.UpdateTypesListing (cognitive 34): form_Rename.UpdateTypesListing 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":"2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"58c58305a6ce245504c32eb80155f1f749c55302d0bc0861b71dd2d47682bc54"}},{"ruleId":"D2","level":"warning","message":{"text":"form_PlacePoint.ButtonBasepointBySymbol_Click (cognitive 34): form_PlacePoint.ButtonBasepointBySymbol_Click 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":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"f227680dd7bb6030f966e3ed5ed29c63bb8d05a49277bbe651bb2085a7b99797"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Rename.UpdateTypesListing (cognitive 34): form_Rename.UpdateTypesListing 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":"2016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"96e3fcef44a0c8816de13a2361b52d80113bd41f9ab5f919804a22c2f8dfb626"}},{"ruleId":"D2","level":"warning","message":{"text":"form_PlacePoint.ButtonBasepointBySymbol_Click (cognitive 34): form_PlacePoint.ButtonBasepointBySymbol_Click 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":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"de59feda79ce666b5c3ec82c4b1706cabbed39a86d0e0f9d3f30425155d56b6d"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Rename.UpdateTypesListing (cognitive 34): form_Rename.UpdateTypesListing 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":"2017/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8dd3bb0d708a9ebfb04d16fc6e6042cd327eeba742e3d4aeb64b6acb8b66f8b"}},{"ruleId":"D2","level":"warning","message":{"text":"form_PlacePoint.ButtonBasepointBySymbol_Click (cognitive 34): form_PlacePoint.ButtonBasepointBySymbol_Click 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":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8a603cd397218f0a41f85c0fa43abc6d193126ae9fcfe16363bc9d4407ec197"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Rename.UpdateTypesListing (cognitive 34): form_Rename.UpdateTypesListing 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":"2018/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b88d9f20e4e75ed99b4b83b463dedcc29c1220e5966176cc7ac57a3acae9610"}},{"ruleId":"D2","level":"warning","message":{"text":"form_PlacePoint.ButtonBasepointBySymbol_Click (cognitive 34): form_PlacePoint.ButtonBasepointBySymbol_Click 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":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ae5276e8472058e219df7eeadf9d7d2bd464d908a0a0f076bbca67c92efd3b0"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Export.ExportData (cognitive 33): form_Export.ExportData 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":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4bbd9a159b96f17557bc0d8f8e4df67b88652372a645547ff276e75f6e9c991"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Rename.ButtonRename_Click (cognitive 33): form_Rename.ButtonRename_Click 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":"2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ecc824ac2cd1a5e696832708feed64bfc13eec909d8b3b5530e321676175b7a"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Export.ExportData (cognitive 33): form_Export.ExportData 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":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe477f030d7999a56c11880c9fcc912c3ccd74027d0bbd98e9541b84b59e1f1a"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Rename.ButtonRename_Click (cognitive 33): form_Rename.ButtonRename_Click 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":"2016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"13e5fbe5604326a6e0ee808845f2fbab43c5a5de2727668e9ebc0f68125cb760"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Export.ExportData (cognitive 33): form_Export.ExportData 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":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd26b7d42e561eff302ce7e41c5445cf079473fe48164fde46cf3209ded5ba8c"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Rename.ButtonRename_Click (cognitive 33): form_Rename.ButtonRename_Click 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":"2017/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2342b15852214b9e126bdfb87ad3bc22fbea69f5898704926f75d5f1dd142b4"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Export.ExportData (cognitive 33): form_Export.ExportData 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":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dd2282417934c2c059cdaacd691ec9a4e3e149a42b2e152243fd7a908afeff2"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Rename.ButtonRename_Click (cognitive 33): form_Rename.ButtonRename_Click 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":"2018/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"14f1b80121262c989bbfcb9b1d2760f37add0de02d167bbf4934e98607e7174b"}},{"ruleId":"D2","level":"warning","message":{"text":"clsFamilyType.RenameElement (cognitive 32): clsFamilyType.RenameElement 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":"2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsFamilyType.vb"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed31858650f37fcebe51a3d7c1b72ba662e3b6c687cfa1264068c2d19dd0d4e7"}},{"ruleId":"D2","level":"warning","message":{"text":"clsFamilyType.RenameElement (cognitive 32): clsFamilyType.RenameElement 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":"2016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsFamilyType.vb"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9c3740f1f70acc7a9b7400f40108d805c75e3c1712326be8b6ec5eda2b13039"}},{"ruleId":"D2","level":"warning","message":{"text":"clsFamilyType.RenameElement (cognitive 32): clsFamilyType.RenameElement 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":"2017/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsFamilyType.vb"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0d29392653e9d4f43d992debdc35b78b49777187dc5f6c161d25a6e483c4a82"}},{"ruleId":"D2","level":"warning","message":{"text":"clsFamilyType.RenameElement (cognitive 32): clsFamilyType.RenameElement 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":"2018/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsFamilyType.vb"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"d28ca50e7bb1c7fbc712b8ea140b01862b398871c7df2cc157b9336d58822670"}},{"ruleId":"D2","level":"warning","message":{"text":"form_DataManager.ButtonBrowse_Click (cognitive 31): form_DataManager.ButtonBrowse_Click 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":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ce66b4869ac834558585d22779c993a0e54ac8bd38bbcc37c862a4e9195576a"}},{"ruleId":"D2","level":"warning","message":{"text":"AppMain.LoadItemsOne (cognitive 31): AppMain.LoadItemsOne 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":"Case.AppsRibbon/Entry/AppMain.vb"},"region":{"startLine":592}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7875c773cfab03d4fbf913155ccdfdc1bd1565bcc7380953c30d5461c167412"}},{"ruleId":"D2","level":"warning","message":{"text":"form_DataManager.ButtonBrowse_Click (cognitive 31): form_DataManager.ButtonBrowse_Click 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":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb90ca74233c34b7f9bc2d6bed9a1cdd4f91975b10be4d6b9c90f059c1fe8c6d"}},{"ruleId":"D2","level":"warning","message":{"text":"form_DataManager.ButtonBrowse_Click (cognitive 31): form_DataManager.ButtonBrowse_Click 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":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e05690a341b4446722904482a82aafefbd42ad9aa2dcc521a755f7a01dc5f5b"}},{"ruleId":"D2","level":"warning","message":{"text":"AppMain.LoadItemsOne (cognitive 31): AppMain.LoadItemsOne 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":"Case.AppsRibbon.2017/Entry/AppMain.vb"},"region":{"startLine":592}}}],"partialFingerprints":{"codehealthFindingId/v1":"05d42ad86a544f919f2d35a4232b6caa20614f925b6aec798c176a632e35bfa2"}},{"ruleId":"D2","level":"warning","message":{"text":"form_DataManager.ButtonBrowse_Click (cognitive 31): form_DataManager.ButtonBrowse_Click 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":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"12000f5b766399143861b94c26b8a997b4de9f1bbd6fb12843d27c617e514039"}},{"ruleId":"D2","level":"warning","message":{"text":"AppMain.LoadItemsOne (cognitive 31): AppMain.LoadItemsOne 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":"Case.AppsRibbon.2018/Entry/AppMain.vb"},"region":{"startLine":592}}}],"partialFingerprints":{"codehealthFindingId/v1":"7598e3d1aab625307280ce04c36164b158eece1e7408e62b1bbcd333a33f9948"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.Setup (cognitive 30): clsSettings.Setup 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":"2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"af2d0c9f2c38ff07f44ef46c93dc4766df3f8a9434586cfdae840e25756a4398"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.ButtonOk_Click (cognitive 30): form_Main.ButtonOk_Click 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":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"d85f85493ed14653da157249e4bc2886c1c53956398ebb0162b39e45145e7d20"}},{"ruleId":"D2","level":"warning","message":{"text":"clsRoom.ExtractBoundaryPointsFromRoom (cognitive 30): clsRoom.ExtractBoundaryPointsFromRoom 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":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"d70ed46fad24f14662e1869db425890ef5a44f4c8858c1b3d89730203ab48a70"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSpace.ExtractBoundaryPointsFromSpace (cognitive 30): clsSpace.ExtractBoundaryPointsFromSpace 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":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bc6ca281005838b6a59d44fe2b42bf055f67bb5b83cd25cc1cfc811bf460191"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.Setup (cognitive 30): clsSettings.Setup 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":"2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"3db60e81a76b07ddb5a7f6f5d66633babfdc4c92d6535195228fc76fdd70ea5a"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.ButtonOk_Click (cognitive 30): form_Main.ButtonOk_Click 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":"2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"4091029e8505e00999f0e41e477083b562720bee4ebd451bb295ed3913caf048"}},{"ruleId":"D2","level":"warning","message":{"text":"clsRoom.ExtractBoundaryPointsFromRoom (cognitive 30): clsRoom.ExtractBoundaryPointsFromRoom 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":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"d27ec25a1b0946fae617b4881490c51ad3a8f522aa37c3a9798b46f6aaec02e2"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSpace.ExtractBoundaryPointsFromSpace (cognitive 30): clsSpace.ExtractBoundaryPointsFromSpace 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":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ee97e9942be5d6e0b146b314d93e2f857e0a5676b741bd64cb6e1cb82fd0cb7"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.Setup (cognitive 30): clsSettings.Setup 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":"2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"c28cbac5f41f89cc98c4d97138ea5141aefaff200bedeb785d115b71d9c4a019"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.ButtonOk_Click (cognitive 30): form_Main.ButtonOk_Click 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":"2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"170efe7549dacd700150056911971058621f909d4289f2a76a0acf62224725cb"}},{"ruleId":"D2","level":"warning","message":{"text":"clsRoom.ExtractBoundaryPointsFromRoom (cognitive 30): clsRoom.ExtractBoundaryPointsFromRoom 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":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fadef4f8ef35403e2b0d1850699420a09261f90736a3beda027b5a0f3abba23"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSpace.ExtractBoundaryPointsFromSpace (cognitive 30): clsSpace.ExtractBoundaryPointsFromSpace 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":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"10bc144a9d7ef85cb936d6a834bd2da7a7b8006b1742b44c3bcbcd0f5e775cce"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.Setup (cognitive 30): clsSettings.Setup 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":"2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"a54b2753ce7fe570e273558085ec7f01afcf7fa22c9cc4e6d6ae05489dd95bd9"}},{"ruleId":"D2","level":"warning","message":{"text":"clsRoom.ExtractBoundaryPointsFromRoom (cognitive 30): clsRoom.ExtractBoundaryPointsFromRoom 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":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"e80e6d340b103271a10b293791102e194b33a0c5bced55b6ec2149c1bab2d038"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSpace.ExtractBoundaryPointsFromSpace (cognitive 30): clsSpace.ExtractBoundaryPointsFromSpace 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":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"826fe86fbb1d920614b1c4eb46b5bc635eaa6799bcadd0f3f3edb3f1328d0f9c"}},{"ruleId":"D2","level":"warning","message":{"text":"clsExcel._GetSelectedSyncHeaderColumns (cognitive 29): clsExcel._GetSelectedSyncHeaderColumns 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":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d184ebd4809b9912096892d908c32999b67ebc433d6e46324bf616a188ae2c2"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Sync.GetCategoryAndKeys (cognitive 29): form_Sync.GetCategoryAndKeys 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":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"d66f91c2bb9a79f6c12723714b5b94b11206833e6965e6f36d9dd82319eb7e29"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.Setup (cognitive 29): clsSettings.Setup 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":"2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"311917e5043691f0c2f1aca1f2c3975ab9fc467f780136e18d08f72fb936e4ce"}},{"ruleId":"D2","level":"warning","message":{"text":"clsExcel._GetSelectedSyncHeaderColumns (cognitive 29): clsExcel._GetSelectedSyncHeaderColumns 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":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"af5eab58f3cba1c6766e0043c8510eadeb90d2cfc8a0a42933061e8e2d66ed63"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Sync.GetCategoryAndKeys (cognitive 29): form_Sync.GetCategoryAndKeys 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":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"68afdaf5b9d0848f7a52f72c2ab81d05541e8d3a6562e71a64f899dad7585b1e"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.Setup (cognitive 29): clsSettings.Setup 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":"2016/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"32a9acf58c546779b7c2e730c09e381484de62936613658cafe5910b2d17fe14"}},{"ruleId":"D2","level":"warning","message":{"text":"clsExcel._GetSelectedSyncHeaderColumns (cognitive 29): clsExcel._GetSelectedSyncHeaderColumns 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":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d47e8aaca725826fbefa41f9be0018179ce386e7b543927c7c57a80c3bbf1f5"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Sync.GetCategoryAndKeys (cognitive 29): form_Sync.GetCategoryAndKeys 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":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce314ceabcc06a31292042b6f88c5f72bd98d3b33e3c53e7ea6dc8b466beea3a"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.Setup (cognitive 29): clsSettings.Setup 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":"2017/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f40048361389231e6322ba3cd565d18f1397d42996c616daa3d1c8fb7b307ed"}},{"ruleId":"D2","level":"warning","message":{"text":"clsExcel._GetSelectedSyncHeaderColumns (cognitive 29): clsExcel._GetSelectedSyncHeaderColumns 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":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a8695e6365f43cf25c75760d2494d1f975ac456f94cdc24325f968d7966c5ce"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Sync.GetCategoryAndKeys (cognitive 29): form_Sync.GetCategoryAndKeys 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":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"461fdc2e207c3cfb7c3c59ed494a4cb79abe27b2d416343d3343594993d004dc"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.ButtonOk_Click (cognitive 29): form_Main.ButtonOk_Click 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":"2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d5d8a2725398c954edd847328397105aead2a0c37a1c0912b25e318aa5ac2ae"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.Setup (cognitive 29): clsSettings.Setup 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":"2018/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"23ca20d105b7b11af17e8d56fd0d484bb5b7471ad7f9c3a824f9c3614fad7974"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetInstances (cognitive 28): clsSettings.GetInstances 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":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":509}}}],"partialFingerprints":{"codehealthFindingId/v1":"7984b3eef10fc7c088baaefc3a1e82847da2c359e8197ee84e35dee000df21f2"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Data.ShowAsKindsBasic (cognitive 28): form_Data.ShowAsKindsBasic 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":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cc7784e0eb8d4fa22a4dec98845d2294396de1e7b99fc321242f3ddf11b30bc"}},{"ruleId":"D2","level":"warning","message":{"text":"form_PlacePoint.ButtonBasepointByCategory_Click (cognitive 28): form_PlacePoint.ButtonBasepointByCategory_Click 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":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"d32b5be27a759cf6cdafd0900648a43374efa7bc694d4f620b28173909d09d52"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetViews (cognitive 28): clsSettings.GetViews 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":"2015/Case.ViewTemplates/Case.ViewTemplates/Data/clsSettings.vb"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"da5db1f8bbcef90a4e37734e630e3ad585fe6b8fd13cea16fff4f89374e7fda9"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetInstances (cognitive 28): clsSettings.GetInstances 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":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":509}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f5aa431117f04be011bf4000526fc2dd4deb26778001fb44af5cfce13091c44"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Data.ShowAsKindsBasic (cognitive 28): form_Data.ShowAsKindsBasic 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":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"064e879d39e3b01a21dd8d9a5959010bdc00ff3dbcfb9ce346a6781933ebd525"}},{"ruleId":"D2","level":"warning","message":{"text":"form_PlacePoint.ButtonBasepointByCategory_Click (cognitive 28): form_PlacePoint.ButtonBasepointByCategory_Click 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":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"f227efdea4017a3aaa216e55f0fb2816dc4e45fbe0fdeda88eaa7f5e724e34cf"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetViews (cognitive 28): clsSettings.GetViews 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":"2016/Case.ViewTemplates/Case.ViewTemplates/Data/clsSettings.vb"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c61c9297a593728a7bc7ae60acad5d741b96c73918d714ae3a2a1a37c0731d7"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetInstances (cognitive 28): clsSettings.GetInstances 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":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":509}}}],"partialFingerprints":{"codehealthFindingId/v1":"c83bcbc2980e52eaae9b2663d791433569c76a85229c4780693e9906de3b15bb"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Data.ShowAsKindsBasic (cognitive 28): form_Data.ShowAsKindsBasic 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":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"df0d8f69f976429ca42446b94d8ab3b4d89e01c6695c32d7a1056200f66fec4b"}},{"ruleId":"D2","level":"warning","message":{"text":"form_PlacePoint.ButtonBasepointByCategory_Click (cognitive 28): form_PlacePoint.ButtonBasepointByCategory_Click 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":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb609fe77867deceb8ef58929cb7c6472bccafd4943dd10d07ac979af12d721b"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetViews (cognitive 28): clsSettings.GetViews 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":"2017/Case.ViewTemplates/Case.ViewTemplates/Data/clsSettings.vb"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"4eb2330f75f644deb993f75c4aa231fb4910d74979d5e65701d6d861517e3c59"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetInstances (cognitive 28): clsSettings.GetInstances 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":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":509}}}],"partialFingerprints":{"codehealthFindingId/v1":"561118bd674bf099a21737a7515bc47a4cffe306c7b75fe654f80d9dcfe6b022"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Data.ShowAsKindsBasic (cognitive 28): form_Data.ShowAsKindsBasic 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":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd83772d5324b4807565733ba16c3c16158c5999c02664c7e24bb194b1117364"}},{"ruleId":"D2","level":"warning","message":{"text":"form_PlacePoint.ButtonBasepointByCategory_Click (cognitive 28): form_PlacePoint.ButtonBasepointByCategory_Click 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":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"d16e68ed20fb1e1bc21cae0f1a931d3ca4e0db9aa5f283f819c491c7e15549fd"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetViews (cognitive 28): clsSettings.GetViews 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":"2018/Case.ViewTemplates/Case.ViewTemplates/Data/clsSettings.vb"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"6da63a0bdbedf10a1c396585786a0595a5e0ddd6afed577855317ec434f35fc6"}},{"ruleId":"D2","level":"warning","message":{"text":"form_ExportSchedule.ExportSchedules (cognitive 27): form_ExportSchedule.ExportSchedules 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":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd65c36aa7627ccb5ab47908b0932ae85f3427fde4684c55cf78d3fac7e35ffe"}},{"ruleId":"D2","level":"warning","message":{"text":"form_ExportSchedule.ExportSchedules (cognitive 27): form_ExportSchedule.ExportSchedules 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":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bdec7657fbd06c31cbc2700edd03faf334d31de41ccc0514b15fde18d460076"}},{"ruleId":"D2","level":"warning","message":{"text":"form_ExportSchedule.ExportSchedules (cognitive 27): form_ExportSchedule.ExportSchedules 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":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"422f721c40486dff9cceeeb42d1d7425bade941bfb72e57276ecfd8db45388b3"}},{"ruleId":"D2","level":"warning","message":{"text":"form_ExportSchedule.ExportSchedules (cognitive 27): form_ExportSchedule.ExportSchedules 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":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"35adfc5112ef1cd71e2800fe779e3811cfe30951fff71bbf691d686b0fed75f0"}},{"ruleId":"D2","level":"warning","message":{"text":"clsExcel.Setup (cognitive 26): clsExcel.Setup 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":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"69784203ff102bec685bdadecba6ad411cb25f2f681c27365110122e39fb465e"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSharedParameters.BindDefinitionsToCategories (cognitive 26): clsSharedParameters.BindDefinitionsToCategories 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":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"824ca55fd82b2ccd23783c9838608dbc49b10a3a48c5c37637102d11b1c99219"}},{"ruleId":"D2","level":"warning","message":{"text":"clsExcel.Setup (cognitive 26): clsExcel.Setup 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":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8cc64202dc4a493bf854f30a882aad85bb1e5df30142904fa9658b1188ace9f"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSharedParameters.BindDefinitionsToCategories (cognitive 26): clsSharedParameters.BindDefinitionsToCategories 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":"2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"3536e53710dc2e19611645bd451f7225272ee372a592225d45043ec431057faa"}},{"ruleId":"D2","level":"warning","message":{"text":"clsExcel.Setup (cognitive 26): clsExcel.Setup 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":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"234250e63e30e1050520467fd27468aa3e02dfe25fe3d12c4d5ed79f6b754556"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSharedParameters.BindDefinitionsToCategories (cognitive 26): clsSharedParameters.BindDefinitionsToCategories 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":"2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e24a97f522c0326ea59b1b1a98c7ab8b570c2b4524819075efa04dfa65e0b48"}},{"ruleId":"D2","level":"warning","message":{"text":"clsExcel.Setup (cognitive 26): clsExcel.Setup 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":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"01d485e0200cb1afafa7b133faa84a452218ec3645cfd26a06cd94130cb486f8"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSharedParameters.BindDefinitionsToCategories (cognitive 26): clsSharedParameters.BindDefinitionsToCategories 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":"2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"daa08c4ae973704b5557b956994e21d709207b9eee61895f6cb94c38e7d47ed0"}},{"ruleId":"D2","level":"warning","message":{"text":"clsRvtScheduleData.WriteSectionRowHtml (cognitive 25): clsRvtScheduleData.WriteSectionRowHtml 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":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fc7f6aa3ab2a542f525920bebee59c995c7fca7018fab63eb91989c2a652da6"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Rename.Setup (cognitive 25): form_Rename.Setup 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":"2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bc36c1f385ae2335e99a3f75c6899c62b6b0b5f0f7bcca24f619f39950d0309"}},{"ruleId":"D2","level":"warning","message":{"text":"clsRvtScheduleData.WriteSectionRowHtml (cognitive 25): clsRvtScheduleData.WriteSectionRowHtml 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":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec5aacd6cca036fbd616a6f15cd7b2bf1a080d2395a88f89bd88b1f87ccda73f"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Rename.Setup (cognitive 25): form_Rename.Setup 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":"2016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf500f057dfeb6848ecfdf485f15f0cde5395de5f0e813c3cf06e352b02e8378"}},{"ruleId":"D2","level":"warning","message":{"text":"clsRvtScheduleData.WriteSectionRowHtml (cognitive 25): clsRvtScheduleData.WriteSectionRowHtml 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":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"191f5cebebe4801e5c72bba5726daa65ea210d5a46862f51d00a613030922908"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Rename.Setup (cognitive 25): form_Rename.Setup 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":"2017/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"216376888bafedeed1505d385ccd6c85245ae49d189a463eb42c226413819fcd"}},{"ruleId":"D2","level":"warning","message":{"text":"clsRvtScheduleData.WriteSectionRowHtml (cognitive 25): clsRvtScheduleData.WriteSectionRowHtml 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":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"081caf3b0b0d0474ccc1fa20ea607dd664b070cc07977b3462fbabf964f45fe7"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Rename.Setup (cognitive 25): form_Rename.Setup 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":"2018/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"00d09e6e46449613a39f9b88ab95350e34b8254c2bcbe9c278545ca4a55d49cc"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.ChangeIfMatch (cognitive 24): clsSettings.ChangeIfMatch 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":"2015/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"e610ceae32c1f6cef5b2cec2e266ae19ba884f13a4f3e548c2faafa1fe0c7d60"}},{"ruleId":"D2","level":"warning","message":{"text":"RVTFamilyMassUtils.RVTTrimSurface (cognitive 24): RVTFamilyMassUtils.RVTTrimSurface 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":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f7b547d4d9e0900b241228fd8b91fe7c7476d94f292b60e445b37aefc62f63a"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.ImportData (cognitive 24): clsSettings.ImportData 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":"2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSettings.vb"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c309bb05112f518483e100202667ab610d66da76a85116e3e2e6219c4097447"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Tag.LoadViewports (cognitive 24): form_Tag.LoadViewports 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":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1ee9d45a5840e82607785b776d82f1b839a0835cf40aef2e0f006d516f10b2f"}},{"ruleId":"D2","level":"warning","message":{"text":"form_ParameterConfigurationManager.ButtonSave_Click (cognitive 24): form_ParameterConfigurationManager.ButtonSave_Click 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":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc1429555122c9e2f919fba3afea732dece70131e50158347c9ac376a12a18aa"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.LevelHosting (cognitive 24): form_Main.LevelHosting 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":"2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"22ac26e7e74c4c2577a24707da8e6e803f76d0966b5a3f1aca48b23d7a852b7b"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.ChangeIfMatch (cognitive 24): clsSettings.ChangeIfMatch 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":"2015/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"61de693be2c8203e310d37be3f0a637a5df289dce90365a5e92dd8fa9d262044"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.buttonOk_Click (cognitive 24): form_Main.buttonOk_Click 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":"2015/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3dddc3b7d9a86e139e46be33323c6f248edade600276b9f9eba287461a807a8"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.ChangeIfMatch (cognitive 24): clsSettings.ChangeIfMatch 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":"2016/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc13f231ee80dee2837c28cc6ce6c04696d3d7bba42fad999f2a64316bc5821f"}},{"ruleId":"D2","level":"warning","message":{"text":"RVTFamilyMassUtils.RVTTrimSurface (cognitive 24): RVTFamilyMassUtils.RVTTrimSurface 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":"2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"e905505820604ccbf29089acfa5294d9a1e3fa5b95ff03a84fa97f5b74354ea8"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.ImportData (cognitive 24): clsSettings.ImportData 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":"2016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSettings.vb"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c12b8971e219902ff7f579b99c423019a30396463d0d8e3c77ecbd7b1a9cd0d"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Tag.LoadViewports (cognitive 24): form_Tag.LoadViewports 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":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"8719142dbf1f66d2e0c1603e24ffec264229921f569316071c5cf3b476880599"}},{"ruleId":"D2","level":"warning","message":{"text":"form_ParameterConfigurationManager.ButtonSave_Click (cognitive 24): form_ParameterConfigurationManager.ButtonSave_Click 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":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f950eaf73162a5cea6119ecb863662d1ba78079c46d0d9804f3e9efab3b399f"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.LevelHosting (cognitive 24): form_Main.LevelHosting 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":"2016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"b14d7b338147cca7f5105023569bd4d71a23ff92e0de90e3f9c2915e8172b8df"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.ChangeIfMatch (cognitive 24): clsSettings.ChangeIfMatch 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":"2016/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"86f61cd70de7d24f848a5fb6bb56c3055ad93918331f20187bb40a3335ee8da9"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.buttonOk_Click (cognitive 24): form_Main.buttonOk_Click 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":"2016/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5208f5d8a938acfcf6749cb30d38bec9bdfb4c4a07896eb736b66f8fe833b15"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.ChangeIfMatch (cognitive 24): clsSettings.ChangeIfMatch 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":"2017/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"91b7cffcc620634e7e8bcbaa9c0215256e7aa62da6fad42cc45e1d68f9b49d0e"}},{"ruleId":"D2","level":"warning","message":{"text":"RVTFamilyMassUtils.RVTTrimSurface (cognitive 24): RVTFamilyMassUtils.RVTTrimSurface 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":"2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5789ed56bb25f23c8258d1d16db1004e7b20c706657b5803f89e180ea69d724"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.ImportData (cognitive 24): clsSettings.ImportData 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":"2017/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSettings.vb"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"677cd38f234f4b51f32f2a9b9b9f0cd9c1304fec883825cb7537bd188ea9d827"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Tag.LoadViewports (cognitive 24): form_Tag.LoadViewports 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":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"696fa8f7c5ea01ded0dd820a05c83465834e2c991546c48de09b810aefb69bc4"}},{"ruleId":"D2","level":"warning","message":{"text":"form_ParameterConfigurationManager.ButtonSave_Click (cognitive 24): form_ParameterConfigurationManager.ButtonSave_Click 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":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b314090a1908800607070135dd84c7aa70c684e88c6cc2cb96a854774655233"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.LevelHosting (cognitive 24): form_Main.LevelHosting 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":"2017/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"46c1f104ab47480798aa136325cf9dc939295203aa882c06b0e9f818450a4ab4"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.ChangeIfMatch (cognitive 24): clsSettings.ChangeIfMatch 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":"2017/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a05f630ceed12ca265a5339754d384f419df0dd2a5e935add5145dc931d2b29"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.buttonOk_Click (cognitive 24): form_Main.buttonOk_Click 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":"2017/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3fdf005fb3632f3e9f2606bcc999d2fd8785e8b87f6e7f76b8bb26f30421e3e"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.ChangeIfMatch (cognitive 24): clsSettings.ChangeIfMatch 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":"2018/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"33a940c9842d61bf59284bb9ddd8bfa59b344b5026fa5086fb45dd2169deb4d3"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.ImportData (cognitive 24): clsSettings.ImportData 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":"2018/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSettings.vb"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c17c63ab4f173cd8177f338bbbc09d7ebad9387f2eb97c46eb85fa60ab9c241"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Tag.LoadViewports (cognitive 24): form_Tag.LoadViewports 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":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"375ad5ed1e459b784b8cb36ae64b044c90358f51bcc69a3c18c035199fcf0404"}},{"ruleId":"D2","level":"warning","message":{"text":"form_ParameterConfigurationManager.ButtonSave_Click (cognitive 24): form_ParameterConfigurationManager.ButtonSave_Click 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":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"110a6f5145ec1072dbee3b2aed93782b7c4d6c2b53356740be27ec6a6102670d"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.LevelHosting (cognitive 24): form_Main.LevelHosting 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":"2018/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d1078c81a1fda496867a592e6588c7a0dc093fbcd790e64f18887510606ab0f"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.ChangeIfMatch (cognitive 24): clsSettings.ChangeIfMatch 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":"2018/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"6301be668dbc9f2af00ec649e389c64fe2249ed7733c9694bc6e1cb18c37cd39"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.buttonOk_Click (cognitive 24): form_Main.buttonOk_Click 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":"2018/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ebd3a476efcb37b5b43ddf5ea2dad5a2193262112394d0f4900dbf3049e7e82"}},{"ruleId":"D2","level":"warning","message":{"text":"RVTFamilyMassUtils.RVTTrimSurface (cognitive 24): RVTFamilyMassUtils.RVTTrimSurface 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":"2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b9b8b47608c0881accb8b82e709ddff21051bf4ad59b466b1308ee461b672c8"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Find.FilterListings (cognitive 23): form_Find.FilterListings 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":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"95a08c0b60e6f1ffd34b7d7a6c84b4e65e05c6945f4c1e11f39849be4937f675"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.ReplaceStyles (cognitive 23): clsSettings.ReplaceStyles 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":"2015/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"96df0ebb73ff498d221768f805e796e433ae1f9bb633752fa4fbdd79ea1aa0f0"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Find.FilterListings (cognitive 23): form_Find.FilterListings 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":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"8959b9ebce5f3acb425b13b225574f6a6b00dc2d5348dbc88f3e838e8fd2233d"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.ReplaceStyles (cognitive 23): clsSettings.ReplaceStyles 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":"2016/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"5001972086a377be7b8675ea3ef7c5bd14f87387cf18dd7b1b739406641b910f"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Find.FilterListings (cognitive 23): form_Find.FilterListings 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":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"f184f7d57ab20b58081276a9b82010230124d1786878e699be4222d6fbe60348"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.ReplaceStyles (cognitive 23): clsSettings.ReplaceStyles 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":"2017/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"f956436ea661b30f14df0aa0bfe3034b4bf0bd290a3bfa4acf38db34761ecc26"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Find.FilterListings (cognitive 23): form_Find.FilterListings 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":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"62ff9b986a996958735c7d1b278a4d78ba1e4d97740922bdd63e254e6ba3c2c1"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.ReplaceStyles (cognitive 23): clsSettings.ReplaceStyles 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":"2018/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c7ada28ebe8c5a371b32590c3024ae38c90bc32294d074be784f0ac65d30463"}},{"ruleId":"D2","level":"warning","message":{"text":"D9B42C3FEA6F4F9E8E1B62E993AA2514.Execute (cognitive 22): D9B42C3FEA6F4F9E8E1B62E993AA2514.Execute 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":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2514.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb1a95adfd7dee51c097435dbe959a0dfa68bc342127cc552d8cd20dc9976e84"}},{"ruleId":"D2","level":"warning","message":{"text":"form_ParameterConfigurationManager.ComboBoxCategory_SelectionChanged (cognitive 22): form_ParameterConfigurationManager.ComboBoxCategory_SelectionChanged 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":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6109a28bcc824a92fc131d04fbe7d6f7b481d285311e32796563633e8557e30"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.ProcessData (cognitive 22): form_Main.ProcessData 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":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2d5bd4cf49cdf877e4256f3f5975d68a20350bd64ed2ff4ae7d2d4dbd477a38"}},{"ruleId":"D2","level":"warning","message":{"text":"D9B42C3FEA6F4F9E8E1B62E993AA2514.Execute (cognitive 22): D9B42C3FEA6F4F9E8E1B62E993AA2514.Execute 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":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2514.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"e643fd2c0000267075f4f189510aa0d6dadcba07bbddd6c9ca25ebe494e10165"}},{"ruleId":"D2","level":"warning","message":{"text":"form_ParameterConfigurationManager.ComboBoxCategory_SelectionChanged (cognitive 22): form_ParameterConfigurationManager.ComboBoxCategory_SelectionChanged 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":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"11b8202dd9a5b086a10f23e9e5eb6eff39e7271aab5de57dca6cbd98dc4715e5"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.ProcessData (cognitive 22): form_Main.ProcessData 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":"2016/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"928979d0617c414448e3ee6ffbbe555f4ffd47d5274ac1b3b83029827fec0a6c"}},{"ruleId":"D2","level":"warning","message":{"text":"D9B42C3FEA6F4F9E8E1B62E993AA2514.Execute (cognitive 22): D9B42C3FEA6F4F9E8E1B62E993AA2514.Execute 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":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2514.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4b5d3147692055dd6b893759d37b11e8bc23f12e12b091b0f10f156ff9c7532"}},{"ruleId":"D2","level":"warning","message":{"text":"form_ParameterConfigurationManager.ComboBoxCategory_SelectionChanged (cognitive 22): form_ParameterConfigurationManager.ComboBoxCategory_SelectionChanged 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":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"c26d3b3c48a993fccc85ccfe47eadf8abdb9f1eee5098e654dce43dd990f93b0"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.ProcessData (cognitive 22): form_Main.ProcessData 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":"2017/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b33c2268f5e56fc23c3ee60bdbc65ad2e8b6fa0cc472150a350ecb822c4a918"}},{"ruleId":"D2","level":"warning","message":{"text":"D9B42C3FEA6F4F9E8E1B62E993AA2514.Execute (cognitive 22): D9B42C3FEA6F4F9E8E1B62E993AA2514.Execute 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":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2514.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbe3d3499896ded06a67a7f3e3c5089fec73b66852dbe3f57ccc6580ddecd8f9"}},{"ruleId":"D2","level":"warning","message":{"text":"form_ParameterConfigurationManager.ComboBoxCategory_SelectionChanged (cognitive 22): form_ParameterConfigurationManager.ComboBoxCategory_SelectionChanged 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":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"af261063270040b327deb273197115563b28964aeb05d890bc8ae5cfa40dabc1"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.ProcessData (cognitive 22): form_Main.ProcessData 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":"2018/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"c229a02828c7c7e127f3b4cd9eec4555c09bfd0afb6d3513f49310b547c9ff94"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.SetComplexDataValue (cognitive 21): clsSettings.SetComplexDataValue 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":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":592}}}],"partialFingerprints":{"codehealthFindingId/v1":"b083e453cf890fb458f5cd718fd265223cfca173b9241470bb31650feff78b10"}},{"ruleId":"D2","level":"warning","message":{"text":"RVTCurveUtils.RVTNurbsCrv (cognitive 21): RVTCurveUtils.RVTNurbsCrv 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":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":522}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc227d8a3b1ce8b9c3fa51633f9b680b34a0f4dcee99540706205bec430528da"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSharedParameters.BindDefinitionsToCategories (cognitive 21): clsSharedParameters.BindDefinitionsToCategories 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":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"70cbce7d8ef6e6331916bb6acc07f87115ee7bc82d9f3af82b48d0eb0849c779"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.DeleteViews (cognitive 21): clsSettings.DeleteViews 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":"2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"64397b65992b4bbbe46e25c2484176ee68d15084211816d9ef0139671cb03173"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.SetComplexDataValue (cognitive 21): clsSettings.SetComplexDataValue 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":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":592}}}],"partialFingerprints":{"codehealthFindingId/v1":"92ff0b1ce41c94b8b8690cb5ecfb32a26a5398b3c1f49a7dd4a339bc2ddd780e"}},{"ruleId":"D2","level":"warning","message":{"text":"RVTCurveUtils.RVTNurbsCrv (cognitive 21): RVTCurveUtils.RVTNurbsCrv 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":"2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":522}}}],"partialFingerprints":{"codehealthFindingId/v1":"21967e906e2d6ac81488a37be0f92dbe7276ef3e9fe53d3c55a27b048ad30ce6"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSharedParameters.BindDefinitionsToCategories (cognitive 21): clsSharedParameters.BindDefinitionsToCategories 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":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"09bc15cff7ef0372293c1e52656524ccea396b68efd184b8585bf7011d67d1df"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.DeleteViews (cognitive 21): clsSettings.DeleteViews 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":"2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b6df4f1b6f1728938018855d67649fe6bb77783e1703784d1aafa3ecae204f3"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.SetComplexDataValue (cognitive 21): clsSettings.SetComplexDataValue 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":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":592}}}],"partialFingerprints":{"codehealthFindingId/v1":"120e7ea049d979b58901a6d8f4ff83b6d00b2ce43eaedbfba77df48cbce1e0e5"}},{"ruleId":"D2","level":"warning","message":{"text":"RVTCurveUtils.RVTNurbsCrv (cognitive 21): RVTCurveUtils.RVTNurbsCrv 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":"2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":522}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f543c875511803aaaca3a75b84ca5f97e26a33389eedeffe674bda455aca477"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSharedParameters.BindDefinitionsToCategories (cognitive 21): clsSharedParameters.BindDefinitionsToCategories 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":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"3eaaac382242dee4069364d4e7f6220f3b707697b2173cdb569a9cb3fa064c3b"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.DeleteViews (cognitive 21): clsSettings.DeleteViews 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":"2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"09ef5a607a94a1a8e5bab53d7b67ef20f3f25a117a120f73ea1b24ea87088852"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.SetComplexDataValue (cognitive 21): clsSettings.SetComplexDataValue 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":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":592}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fb84d08163606c37b6747d2c6dd589138b7f429d0c38b8c4e03a6afa4ca14df"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSharedParameters.BindDefinitionsToCategories (cognitive 21): clsSharedParameters.BindDefinitionsToCategories 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":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3a2e5f2dba32d045884846e8ffff1d965a9643f52f96a59498f9532330c27e9"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.DeleteViews (cognitive 21): clsSettings.DeleteViews 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":"2018/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"afb775df1a5f9a8d5e413eb0db016ad6c362200607bbb3ed9b140ea43ff226ea"}},{"ruleId":"D2","level":"warning","message":{"text":"RVTCurveUtils.RVTNurbsCrv (cognitive 21): RVTCurveUtils.RVTNurbsCrv 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":"2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":522}}}],"partialFingerprints":{"codehealthFindingId/v1":"404c0095504d667e532e41732f40d3b1a359d0614e1e243b4acfd6c831273238"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Config.ButtonFamilyRemove_Click (cognitive 20): form_Config.ButtonFamilyRemove_Click 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":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":639}}}],"partialFingerprints":{"codehealthFindingId/v1":"b05eb1bfb47ffa2aa5a05e3c74a4f65178da913f183dbbeae2e3e58e4fb22f56"}},{"ruleId":"D2","level":"warning","message":{"text":"clsReportingData.GetElementData (cognitive 20): clsReportingData.GetElementData 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":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":515}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f8ce1baddba5181ed6589d79776820a498a85c00525e3c0a0d69c8aef5e466b"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Config.ButtonFamilyRemove_Click (cognitive 20): form_Config.ButtonFamilyRemove_Click 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":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":639}}}],"partialFingerprints":{"codehealthFindingId/v1":"da479a79a3494e329aba70f67be95147e0e18e1d75f00ce7930d00be33204806"}},{"ruleId":"D2","level":"warning","message":{"text":"clsReportingData.GetElementData (cognitive 20): clsReportingData.GetElementData 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":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":515}}}],"partialFingerprints":{"codehealthFindingId/v1":"02217db2bd9ca0e3b861379599af448446f940c7e4923e261b8d00a05028a1a3"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Config.ButtonFamilyRemove_Click (cognitive 20): form_Config.ButtonFamilyRemove_Click 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":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":639}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d1961d5fd61dd41fd622e2d0fd724babc5a79a90817cffb30982d4cbc1bd229"}},{"ruleId":"D2","level":"warning","message":{"text":"clsReportingData.GetElementData (cognitive 20): clsReportingData.GetElementData 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":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":515}}}],"partialFingerprints":{"codehealthFindingId/v1":"1972aa04323fa7fe6bf111e182ad1b6b8424e319410fe2d460361e9a199c68fc"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Config.ButtonFamilyRemove_Click (cognitive 20): form_Config.ButtonFamilyRemove_Click 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":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":639}}}],"partialFingerprints":{"codehealthFindingId/v1":"02107d69227fde44afbd7b07ee1b058723eed51f7afd22148b59929d4d08b421"}},{"ruleId":"D2","level":"warning","message":{"text":"clsReportingData.GetElementData (cognitive 20): clsReportingData.GetElementData 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":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":515}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bdc02806cf920f9f105a093bf6519347e7045b807541dc8ffe64b2ef0bc7834"}},{"ruleId":"D2","level":"warning","message":{"text":"RVTBrepEdgeUtils.RVTCurveByPoints (cognitive 19): RVTBrepEdgeUtils.RVTCurveByPoints 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":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"7665ec7435f24c5ce68d0f17c571a69d7a7463dff980c17e3b92ad4ee8d628f7"}},{"ruleId":"D2","level":"warning","message":{"text":"RVTCurveUtils.RVTCurveByPoints (cognitive 19): RVTCurveUtils.RVTCurveByPoints 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":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":796}}}],"partialFingerprints":{"codehealthFindingId/v1":"fad09e93ba4383a8d0e41a3b867e589a5dd68bfbd8afada4806e00f17b2b38e0"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetMassParameters (cognitive 19): clsSettings.GetMassParameters 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":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"29789e9e065e26e94e2bd8b3dc0f0c0059be51c0b5e2e05c2e9796af858342a2"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetViewports (cognitive 19): clsSettings.GetViewports 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":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"a02fe1fa9c7e05f3bcc8af4d28c61c69f374d01255df2015cee877a6569bb230"}},{"ruleId":"D2","level":"warning","message":{"text":"clsCategory.GetParameters (cognitive 19): clsCategory.GetParameters 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":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"165cef7dc00d27668041415e7967f8818afe2adb4ab46fd924707ff0a3e9f4be"}},{"ruleId":"D2","level":"warning","message":{"text":"AppMain.LoadItemsTwo (cognitive 19): AppMain.LoadItemsTwo 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":"Case.AppsRibbon/Entry/AppMain.vb"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a8f61ad18599e619f5710970fbfdee31427c1745d55166ce3b908b6f68e402f"}},{"ruleId":"D2","level":"warning","message":{"text":"RVTBrepEdgeUtils.RVTCurveByPoints (cognitive 19): RVTBrepEdgeUtils.RVTCurveByPoints 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":"2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"b84573dfba1701ecf8c8ad5c426c71611fe37e0bf84e47654a213eee636799b3"}},{"ruleId":"D2","level":"warning","message":{"text":"RVTCurveUtils.RVTCurveByPoints (cognitive 19): RVTCurveUtils.RVTCurveByPoints 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":"2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":796}}}],"partialFingerprints":{"codehealthFindingId/v1":"be8ac1b5903fdbba791fe8a984ced36bca411512dc37bc09e24ee256b30d2bb0"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetMassParameters (cognitive 19): clsSettings.GetMassParameters 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":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"3958cf65bf30aecfa8a30e8d7452dfe8cf40f59cebdffbfbec16b24207cfc47f"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetViewports (cognitive 19): clsSettings.GetViewports 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":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"e714241bbbaaf6d4adbf5dce2da2df97f5aa29b6227f0cd6dbce6e3d71b89e67"}},{"ruleId":"D2","level":"warning","message":{"text":"clsCategory.GetParameters (cognitive 19): clsCategory.GetParameters 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":"2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"5335c486e9881c07df1b92724e64c9ba6847c5bd4dddf8216b566641355697b5"}},{"ruleId":"D2","level":"warning","message":{"text":"RVTBrepEdgeUtils.RVTCurveByPoints (cognitive 19): RVTBrepEdgeUtils.RVTCurveByPoints 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":"2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"01c9c3822edb038463def617cbac6582ad50ccbb849115e91bc577cc979afb5f"}},{"ruleId":"D2","level":"warning","message":{"text":"RVTCurveUtils.RVTCurveByPoints (cognitive 19): RVTCurveUtils.RVTCurveByPoints 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":"2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":796}}}],"partialFingerprints":{"codehealthFindingId/v1":"63f4b1aa6f76bf01a6123af81a69a17f90d3b5df8e5f1167be6ee8cce9f73d60"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetMassParameters (cognitive 19): clsSettings.GetMassParameters 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":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cef1b0b454b8821766205ee514a27269e2b13e74e995101456d4454043099aa"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetViewports (cognitive 19): clsSettings.GetViewports 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":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"16741d647e5730a4a18575f4b6a752f58eb96576f7002ee5f04a1542bd0fd67a"}},{"ruleId":"D2","level":"warning","message":{"text":"clsCategory.GetParameters (cognitive 19): clsCategory.GetParameters 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":"2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"04bcab221cc230748cf1720fc77290fd30790eb2ee2df2f36ff5974df3b66c84"}},{"ruleId":"D2","level":"warning","message":{"text":"AppMain.LoadItemsTwo (cognitive 19): AppMain.LoadItemsTwo 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":"Case.AppsRibbon.2017/Entry/AppMain.vb"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fa557de7975cf6a73724105535504244c87b8e4ff0ee969f44e415025e858c6"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetMassParameters (cognitive 19): clsSettings.GetMassParameters 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":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b5c9f4e652569e2d10b41930dbce1a6828a25621930a8884227b7be5a54143e"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetViewports (cognitive 19): clsSettings.GetViewports 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":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"d832ba9c51c55cba208fd897c6009e78e90ca584ff64862984e8938100d0f63f"}},{"ruleId":"D2","level":"warning","message":{"text":"clsCategory.GetParameters (cognitive 19): clsCategory.GetParameters 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":"2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"ceff1579abed5fb0cded7476c4a95295b229d188980bfa03a34446326db754cf"}},{"ruleId":"D2","level":"warning","message":{"text":"AppMain.LoadItemsTwo (cognitive 19): AppMain.LoadItemsTwo 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":"Case.AppsRibbon.2018/Entry/AppMain.vb"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"290781d6d120fffe8344f5ddc60c63181ef83a1fb483e534d847be96afcaa2b0"}},{"ruleId":"D2","level":"warning","message":{"text":"RVTBrepEdgeUtils.RVTCurveByPoints (cognitive 19): RVTBrepEdgeUtils.RVTCurveByPoints 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":"2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"856d908386cbe1a9bd5b507a0d19662205436675f8d8ace302a25750f06e9c61"}},{"ruleId":"D2","level":"warning","message":{"text":"RVTCurveUtils.RVTCurveByPoints (cognitive 19): RVTCurveUtils.RVTCurveByPoints 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":"2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":796}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0d25dec97dc70491d3aabdead51c671d266279bdd9b27069151b1319717152a"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Export.ButtonRemove_Click (cognitive 18): form_Export.ButtonRemove_Click 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":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"09bb1c9254bc754b63aaaf1c86bd6e5725e6be09def60db22ef885416b9d0a25"}},{"ruleId":"D2","level":"warning","message":{"text":"clsModCharts.QueryCategories (cognitive 18): clsModCharts.QueryCategories 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":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"0aaa0dafc0967fb1f10907510779b8cdeb9f6ca1a20cfc437c34b7f08ab26a27"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Data.MultiSelectTreeview1_AfterExpand (cognitive 18): form_Data.MultiSelectTreeview1_AfterExpand 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":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":725}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d889abec2e72503e471db8942f5f2ede0619b34d5c443f43a8937732a3f1b58"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.GetAllFamilyInstanceHosts (cognitive 18): form_Main.GetAllFamilyInstanceHosts 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":"2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"3efc1ab8af2f257dac0e3a04fb040f34090d3e805f9d9879aa81516e9f4b1bd2"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetRevisionItemData (cognitive 18): clsSettings.GetRevisionItemData 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":"2015/Case.RevClouds/Case.RevClouds/Data/clsSettings.vb"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef0b4ba9caf6a9a367bc3efb5253e39563891a202868bcd58d883e1bea51b43c"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.LoadViews (cognitive 18): form_Main.LoadViews 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":"2015/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d41d517314a38da9d4a33ec69e31aceeb061c01c854b134ab7cd9b81edae7ff"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Export.ButtonRemove_Click (cognitive 18): form_Export.ButtonRemove_Click 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":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a0931efa08f3e12c7f02150c57c4ea13d07f90f67dec2ac1d4b141628080548"}},{"ruleId":"D2","level":"warning","message":{"text":"clsModCharts.QueryCategories (cognitive 18): clsModCharts.QueryCategories 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":"2016/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"005e146c6ac9ba91719ffbbe95f59d45968f36d66ae35177fabeb6a7a9ea26d9"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Data.MultiSelectTreeview1_AfterExpand (cognitive 18): form_Data.MultiSelectTreeview1_AfterExpand 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":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":725}}}],"partialFingerprints":{"codehealthFindingId/v1":"976acca5ad765289608014b8c4e088810636a550e71622ed5a275ad6c8626c3f"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.GetAllFamilyInstanceHosts (cognitive 18): form_Main.GetAllFamilyInstanceHosts 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":"2016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"26905aef6e8afd12946e04b91c4583cdb8202e21e2f831d5736fea23b422bdfd"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetRevisionItemData (cognitive 18): clsSettings.GetRevisionItemData 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":"2016/Case.RevClouds/Case.RevClouds/Data/clsSettings.vb"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"5de828171fcf625ebe149fb4b52b43d93cd117c27dff37f7d634869d9ce9bdd6"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.LoadViews (cognitive 18): form_Main.LoadViews 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":"2016/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"fae6a8365079b07c9f08d7ec9fee820fe9f507235b29cff96306a81262487b7b"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Export.ButtonRemove_Click (cognitive 18): form_Export.ButtonRemove_Click 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":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"5774f7fd093c5feffa6c21dbf56f22acb24f5da8df16d6a94d3f3aaa6976def5"}},{"ruleId":"D2","level":"warning","message":{"text":"clsModCharts.QueryCategories (cognitive 18): clsModCharts.QueryCategories 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":"2017/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a18c9dcf09b477f4114acb4f4800bf603fa64bfdc3f04587844b36c84475b81"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Data.MultiSelectTreeview1_AfterExpand (cognitive 18): form_Data.MultiSelectTreeview1_AfterExpand 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":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":725}}}],"partialFingerprints":{"codehealthFindingId/v1":"177402f07d81ebab7215f0ddff8cc83f3d0da3d2f15a12cbad0f1e6cd22918ac"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.GetAllFamilyInstanceHosts (cognitive 18): form_Main.GetAllFamilyInstanceHosts 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":"2017/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cd597d3bf85d2b58df7b9e0c2e4ad3dd7d79abc1a4a1052541ffd87221e9127"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetRevisionItemData (cognitive 18): clsSettings.GetRevisionItemData 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":"2017/Case.RevClouds/Case.RevClouds/Data/clsSettings.vb"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f9928064309e6ccf940d75e351d4df414ef5d475b7a8bd3c417e3c223004e1c"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.LoadViews (cognitive 18): form_Main.LoadViews 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":"2017/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f179ec532b9a26ed1e4136af5ca9b1890641ef13bb77e98dabf8e67eeee1ab5"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Export.ButtonRemove_Click (cognitive 18): form_Export.ButtonRemove_Click 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":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"bae81a7e94768334b486b0cd9dc2428436467566a88980b15a75d78c3adffd74"}},{"ruleId":"D2","level":"warning","message":{"text":"clsModCharts.QueryCategories (cognitive 18): clsModCharts.QueryCategories 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":"2018/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fc4a1053788e3d6ed9b888d7cbdb24d1887fcbf3865f4f7accaaeaef9fe9639"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Data.MultiSelectTreeview1_AfterExpand (cognitive 18): form_Data.MultiSelectTreeview1_AfterExpand 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":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":725}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b41713a384ac6dd3f3b95031978e08c82a2f5b78f6bb981cf8d37bb462c5b44"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.GetAllFamilyInstanceHosts (cognitive 18): form_Main.GetAllFamilyInstanceHosts 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":"2018/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dac5a4feb4e5e71b6d8833109f490f59db28b2ffe965731ac438ba376286b5f"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetRevisionItemData (cognitive 18): clsSettings.GetRevisionItemData 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":"2018/Case.RevClouds/Case.RevClouds/Data/clsSettings.vb"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1e6767af51a5b51b4eb0f35403124f4c121b26b04d1198c9a3c666d32503dce"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.LoadViews (cognitive 18): form_Main.LoadViews 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":"2018/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dc98bdfde0f34ad399f10c3d99384554d653f152dbf9e0b195f5b7892457c2c"}},{"ruleId":"D2","level":"warning","message":{"text":"clsRvtSchedule.Setup (cognitive 17): clsRvtSchedule.Setup 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":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1be7dfaefa278e8ef1be0a045d53e7520b5e577f970aa574b7bd4deef9d5ba1"}},{"ruleId":"D2","level":"warning","message":{"text":"clsConfig.AddIniParameter (cognitive 17): clsConfig.AddIniParameter 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":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c9d88618415f84e0c9941c4073be919fe73bc015418e303902b52693f6fe1dc"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Config.form_Config_Shown (cognitive 17): form_Config.form_Config_Shown 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":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"f749c11413810bf775c1b88515060a744d16715e8067454fb369c0f026e1c210"}},{"ruleId":"D2","level":"warning","message":{"text":"form_ExportPoints.ButtonExport_Click (cognitive 17): form_ExportPoints.ButtonExport_Click 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":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"99e046f6eb3b5adb4f6eeb6076bf9d8c4eca9cf6e8e6af765088a6e0743ee272"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.ImportImages (cognitive 17): form_Main.ImportImages 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":"2015/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"452d56fde6158cd2eb8c6393c00c0d2441d8798e0cd73671e605f6b1fbe6ec78"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.ImportJPG (cognitive 17): form_Main.ImportJPG 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":"2015/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"d519ba6230fc362dc643c2aa6c03de030e8dbe776a7f05eac8b846096eadee27"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetIntersectionHeight (cognitive 17): clsSettings.GetIntersectionHeight 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":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"04544411dd64f9be26a96a947a0e835eb38031af51ada123900c0f8d4f8ee04b"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.Get3dView (cognitive 17): clsSettings.Get3dView 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":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"477218338fd6be96809da2075290c381bfaeaeb2f4c728378416923235bb1871"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetReferencePlanes (cognitive 17): clsSettings.GetReferencePlanes 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":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":462}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e2d32e3968e28e9f53b5761a6fdbc14a95dbe032a334673b17d241db9ac7f7f"}},{"ruleId":"D2","level":"warning","message":{"text":"UnitConversion.CalculateDoubleLength (cognitive 17): UnitConversion.CalculateDoubleLength 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":"2015/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f0ceeab06c41e4b4d85c1f2e767f09a5bc90f6bc6ffa1f945e4ab5ed31469a7"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.PlaceTags (cognitive 17): form_Main.PlaceTags 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":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb5807c06d238e8b76bda3f77bdfd3909a5e61883dd121f7751caa9a73d6202b"}},{"ruleId":"D2","level":"warning","message":{"text":"CmdMain.Execute (cognitive 17): CmdMain.Execute 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":"2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Entry/CmdMain.vb"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4e142e3a7186e498219c80adb2e553a0f765c7595e60dec2ea5e7c8faf6dbb7"}},{"ruleId":"D2","level":"warning","message":{"text":"clsRvtSchedule.Setup (cognitive 17): clsRvtSchedule.Setup 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":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5da6b96564f9154f8b498ddd44f648d6278901f5278edb857b70a37d2e6ce48"}},{"ruleId":"D2","level":"warning","message":{"text":"clsConfig.AddIniParameter (cognitive 17): clsConfig.AddIniParameter 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":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5751825095df9f712e4d700aa165f741be038b6cb532c78f9e728f4665c1909"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Config.form_Config_Shown (cognitive 17): form_Config.form_Config_Shown 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":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"cacf9691bfda6da21f971ca98fb6d1871d35c76a6902d41902557db8a57b046d"}},{"ruleId":"D2","level":"warning","message":{"text":"form_ExportPoints.ButtonExport_Click (cognitive 17): form_ExportPoints.ButtonExport_Click 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":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"d549ac4b79b906d1571d4fa1f0470659221973aedf46efe00791c724bdd2a6bb"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.ImportImages (cognitive 17): form_Main.ImportImages 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":"2016/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0d3c7a0b2f0d89e6b732ad52cec0655797c74c1c675d0ef6104638869a94721"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.ImportJPG (cognitive 17): form_Main.ImportJPG 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":"2016/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc92c57e11bf9bdf207547806bcc5780a00cd2d6e2a69c180ef5cbe9f9137fc4"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetIntersectionHeight (cognitive 17): clsSettings.GetIntersectionHeight 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":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"49dc740f0d365a374c5d9be4834854a25e7b55212e9e77540c8045d750876eb8"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.Get3dView (cognitive 17): clsSettings.Get3dView 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":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"940d44011eec4850f8fb94e597dd88186cffd49d145f1b6cdbe3fd850e62711d"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetReferencePlanes (cognitive 17): clsSettings.GetReferencePlanes 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":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":462}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcd4632e8f716e2a5426a3df5d3fb1332f3db64c94fb20fe1025013bb38ac011"}},{"ruleId":"D2","level":"warning","message":{"text":"UnitConversion.CalculateDoubleLength (cognitive 17): UnitConversion.CalculateDoubleLength 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":"2016/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea33c540539f73bca0eeccbe660ce728efa6d05cd0c3aa2ffe3f639722ee83f6"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.PlaceTags (cognitive 17): form_Main.PlaceTags 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":"2016/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"a322fbfe81f0ab5c37008dbaf1f19045b70ef4649d122eddba8c63221bf8edb3"}},{"ruleId":"D2","level":"warning","message":{"text":"CmdMain.Execute (cognitive 17): CmdMain.Execute 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":"2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Entry/CmdMain.vb"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f3d6b4794f76a5b3f076b251f87459f265dc106a9ce93b52eb7bd90b4a556b4"}},{"ruleId":"D2","level":"warning","message":{"text":"clsRvtSchedule.Setup (cognitive 17): clsRvtSchedule.Setup 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":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdc81ce23ff95d36636272e4ce10ab96678867db3499415b8ade0ccf92c9ff59"}},{"ruleId":"D2","level":"warning","message":{"text":"clsConfig.AddIniParameter (cognitive 17): clsConfig.AddIniParameter 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":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f6ac29af1cdccba75f1084dce00b876515036c2542cf91d95e6b246ea5acd0f"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Config.form_Config_Shown (cognitive 17): form_Config.form_Config_Shown 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":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"d66cef9296bbe1eacbb541f42e01b0388115b92709283267a4668bbd08855abd"}},{"ruleId":"D2","level":"warning","message":{"text":"form_ExportPoints.ButtonExport_Click (cognitive 17): form_ExportPoints.ButtonExport_Click 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":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"73da6fe2c06c090c75edfa4c2b853a96509919929b2c13c5548e86b3ac3b1fc1"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.ImportImages (cognitive 17): form_Main.ImportImages 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":"2017/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4bcbdf6eb9ec77ac738a0af30ce21e0d4633b54265f692028f1a8ac7080a9b8"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.ImportJPG (cognitive 17): form_Main.ImportJPG 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":"2017/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"012d575cfca8a9e4c3b2ca602711bc2fc9512e59d6d4f79464e3f65e3606bdb9"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetIntersectionHeight (cognitive 17): clsSettings.GetIntersectionHeight 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":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"82793758b0b345b6a8ebe46afb05c12aa7fad013b27db5393228fc9e8dbe0fd2"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.Get3dView (cognitive 17): clsSettings.Get3dView 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":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"96b8e07cdd583b091a5a14ac31bb8f4a0656d94dedd0d2500707c687bb578f73"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetReferencePlanes (cognitive 17): clsSettings.GetReferencePlanes 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":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":462}}}],"partialFingerprints":{"codehealthFindingId/v1":"c403b07f370c8616176d42f45b75d22215df9b8c04e801ad97fd32fd2dcf1cfa"}},{"ruleId":"D2","level":"warning","message":{"text":"UnitConversion.CalculateDoubleLength (cognitive 17): UnitConversion.CalculateDoubleLength 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":"2017/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"836259dd925c5152c972eed2cc937da9149da5efb4a902b3c84ad97b77e8534d"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.PlaceTags (cognitive 17): form_Main.PlaceTags 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":"2017/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c88b8822841594dfb9d9e3d2ee320d8b671caba2e81d89370fb5c9c31251a93"}},{"ruleId":"D2","level":"warning","message":{"text":"CmdMain.Execute (cognitive 17): CmdMain.Execute 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":"2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Entry/CmdMain.vb"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8307f6f38bc8d4fca622336934e9b2fa288146aa20482e5871c024b056b30a8"}},{"ruleId":"D2","level":"warning","message":{"text":"clsRvtSchedule.Setup (cognitive 17): clsRvtSchedule.Setup 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":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"442f03f4eb727fa43e51c57a574154ebf52fce577097f23a1431a094a5754229"}},{"ruleId":"D2","level":"warning","message":{"text":"clsConfig.AddIniParameter (cognitive 17): clsConfig.AddIniParameter 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":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a92759c2ee22b755a05e89ba7108a9301f1f472468d0c4ad4d628955ee16c17"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Config.form_Config_Shown (cognitive 17): form_Config.form_Config_Shown 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":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"55d9a43057efe1a7e9073cfab02477db3f6a301eafafabbef4b4b7f054ff0afb"}},{"ruleId":"D2","level":"warning","message":{"text":"form_ExportPoints.ButtonExport_Click (cognitive 17): form_ExportPoints.ButtonExport_Click 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":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":386}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5911aed9cb4c75ee77eb131778d7ada6f4d1e62d6d069a7743092e4ae31eb5f"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.ImportImages (cognitive 17): form_Main.ImportImages 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":"2018/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5c8fce9bda0d5304c1a43cd59eff73ca60f6d0b42acb9e268687d8f73a645b9"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.ImportJPG (cognitive 17): form_Main.ImportJPG 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":"2018/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d8e368a140302a97a2176cc148f102fd96f4f23160854657e3aab750ac9e9dd"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetIntersectionHeight (cognitive 17): clsSettings.GetIntersectionHeight 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":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"c965c651ca5f900e28f7848c474d44af502a8af88f7a0819f01a28f5bfea1b76"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.Get3dView (cognitive 17): clsSettings.Get3dView 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":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c8acefcada36377d93b8383cc35ac63dc1c13e3003ee3a3bd2c9b9fe9114dc0"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetReferencePlanes (cognitive 17): clsSettings.GetReferencePlanes 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":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":462}}}],"partialFingerprints":{"codehealthFindingId/v1":"bef90dd3a993ffd9173ee04a89cb9ad711e602a101d6c562faff0e74d5a41ff6"}},{"ruleId":"D2","level":"warning","message":{"text":"UnitConversion.CalculateDoubleLength (cognitive 17): UnitConversion.CalculateDoubleLength 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":"2018/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a8b217deee9a0fd078bf106e0a524672800917fa7d0b590409385019f149fea"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.PlaceTags (cognitive 17): form_Main.PlaceTags 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":"2018/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a0f5d085257e47e021e8beec7f5e4d7bf331334bee2468353037796c9dccf4a"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.DeleteUnusedTypes (cognitive 16): form_Main.DeleteUnusedTypes 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":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"90dca61ed1d5e3609cd13ce35d108c95020c5437d419a09324df85196a45d026"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetRoomParameters (cognitive 16): clsSettings.GetRoomParameters 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":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2958ae3ea6ad78e7d3209cbbf29c7fd13cd4c29d6ad9789e21731f5bde7254e"}},{"ruleId":"D2","level":"warning","message":{"text":"Form_Main.UpdateViews (cognitive 16): Form_Main.UpdateViews 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":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"816d29f11747c8d27939e93b0a424f7665c592431d0e5350d6f08f4e66e51c32"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Config.SetFormControlsFromConfig (cognitive 16): form_Config.SetFormControlsFromConfig 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":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2bf01bf16011558f02d1b36baa71682f879a21805d3f45e2797cc2d4a886e5a"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Find.ChangeViewReferenceFind_Click (cognitive 16): form_Find.ChangeViewReferenceFind_Click 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. This shape REPEATS in the file: 2 other methods here (form_Find.ChooseViewReferenceNull_Click, form_Find.ToolStripOrphModify_Click) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 3 times rather than 3 independent problems. Splitting this body alone leaves the other 2 exactly as they are. Where these are variations on one operation, the change that clears all 3 is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"54237e853d0a7e7dd1c68166c8cc72141c03ffcd1c63d68ae6421545f55361c6"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Find.ChooseViewReferenceNull_Click (cognitive 16): form_Find.ChooseViewReferenceNull_Click 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. This shape REPEATS in the file: 2 other methods here (form_Find.ChangeViewReferenceFind_Click, form_Find.ToolStripOrphModify_Click) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 3 times rather than 3 independent problems. Splitting this body alone leaves the other 2 exactly as they are. Where these are variations on one operation, the change that clears all 3 is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"d524f7ab04fccf9dc4dbab4b7af5f280cb8317647f535fb73f6612b0083737c5"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Find.ToolStripOrphModify_Click (cognitive 16): form_Find.ToolStripOrphModify_Click 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. This shape REPEATS in the file: 2 other methods here (form_Find.ChangeViewReferenceFind_Click, form_Find.ChooseViewReferenceNull_Click) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 3 times rather than 3 independent problems. Splitting this body alone leaves the other 2 exactly as they are. Where these are variations on one operation, the change that clears all 3 is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"f88b630029923f470bfece2e32896499987e7c12c369996071b7d61a947d0002"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.GetAllFamilyFormulas (cognitive 16): form_Main.GetAllFamilyFormulas 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":"2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d5257dfa16ac988e2ec9f5e11b4b6a31838fc0155c398d3b55e414bbb81b1a7"}},{"ruleId":"D2","level":"warning","message":{"text":"form_RevisionClouds.ButtonExport_Click (cognitive 16): form_RevisionClouds.ButtonExport_Click 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":"2015/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8ea3e5db8995d717039f31f6ba8b59dc555390475680e25499597242a12611e"}},{"ruleId":"D2","level":"warning","message":{"text":"Navis2JiraWin.worker_DoWork (cognitive 16): Navis2JiraWin.worker_DoWork 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":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"d00a2058b48e7b47e44903babb75049dbd24e32404e0cada040ecd848f864d85"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.DeleteUnusedTypes (cognitive 16): form_Main.DeleteUnusedTypes 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":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5fbc600880d26b5761202fb4469b1483ca8ca5e3d4c49d718ee1bcff2d157c2"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetRoomParameters (cognitive 16): clsSettings.GetRoomParameters 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":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"232aef7fef5dbab8a27ecdec8648da90fc918f13886f7a4ad8564a9b6775125d"}},{"ruleId":"D2","level":"warning","message":{"text":"Form_Main.UpdateViews (cognitive 16): Form_Main.UpdateViews 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":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbde4a55f021f3fe4235dc79f70f1c9b080c718d5a899dfbbf3c54ff2e5a1243"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Config.SetFormControlsFromConfig (cognitive 16): form_Config.SetFormControlsFromConfig 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":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fcd7a2aca4762a2f8d479fe30790053d88e492d1a455294a0f7e7c8112fb5c8"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Find.ChangeViewReferenceFind_Click (cognitive 16): form_Find.ChangeViewReferenceFind_Click 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. This shape REPEATS in the file: 2 other methods here (form_Find.ChooseViewReferenceNull_Click, form_Find.ToolStripOrphModify_Click) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 3 times rather than 3 independent problems. Splitting this body alone leaves the other 2 exactly as they are. Where these are variations on one operation, the change that clears all 3 is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a3d0e3dbca02752a119147d85b044d6944c5971a298c7e708c0bc0365119fb8"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Find.ChooseViewReferenceNull_Click (cognitive 16): form_Find.ChooseViewReferenceNull_Click 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. This shape REPEATS in the file: 2 other methods here (form_Find.ChangeViewReferenceFind_Click, form_Find.ToolStripOrphModify_Click) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 3 times rather than 3 independent problems. Splitting this body alone leaves the other 2 exactly as they are. Where these are variations on one operation, the change that clears all 3 is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"3da415e4494ab0d8dfd97fd66a1220b775cad8c697acd16b1f2643a9ef315632"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Find.ToolStripOrphModify_Click (cognitive 16): form_Find.ToolStripOrphModify_Click 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. This shape REPEATS in the file: 2 other methods here (form_Find.ChangeViewReferenceFind_Click, form_Find.ChooseViewReferenceNull_Click) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 3 times rather than 3 independent problems. Splitting this body alone leaves the other 2 exactly as they are. Where these are variations on one operation, the change that clears all 3 is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffc26d8f4222fa5ad7e4d4cebae6bce89af1dd146742cce659711932241e10aa"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.GetAllFamilyFormulas (cognitive 16): form_Main.GetAllFamilyFormulas 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":"2016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"02c33cc9e29e764303e3bb3bfa19a3ceace9a9337964b0cf4b50664baef81595"}},{"ruleId":"D2","level":"warning","message":{"text":"form_RevisionClouds.ButtonExport_Click (cognitive 16): form_RevisionClouds.ButtonExport_Click 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":"2016/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b1cb92b45710275a5029eab7cf23aab83f251d512b9c80bba150231c6331fc9"}},{"ruleId":"D2","level":"warning","message":{"text":"Navis2JiraWin.worker_DoWork (cognitive 16): Navis2JiraWin.worker_DoWork 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":"2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb61e05e7d9da08e17af2b1bbc56822509fe3d556cac1605f452825b4f52e938"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.DeleteUnusedTypes (cognitive 16): form_Main.DeleteUnusedTypes 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":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"15f21176880c4348d9d331bbbf327d8b4828da5fad733540030beb040f2bb41c"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetRoomParameters (cognitive 16): clsSettings.GetRoomParameters 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":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"321d1b82dc3a2a3e257d77bb79b1073d298f26ed63d348731d2a1b4211155c46"}},{"ruleId":"D2","level":"warning","message":{"text":"Form_Main.UpdateViews (cognitive 16): Form_Main.UpdateViews 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":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"d21691e26d0da1125ef36156d21137d8d6e66826d8bceb5e6fb7758645da093e"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Config.SetFormControlsFromConfig (cognitive 16): form_Config.SetFormControlsFromConfig 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":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"11e0b2498200b40fa9a8b2a4b67406e3568804cdba6014c6a0257167f57cd30e"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Find.ChangeViewReferenceFind_Click (cognitive 16): form_Find.ChangeViewReferenceFind_Click 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. This shape REPEATS in the file: 2 other methods here (form_Find.ChooseViewReferenceNull_Click, form_Find.ToolStripOrphModify_Click) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 3 times rather than 3 independent problems. Splitting this body alone leaves the other 2 exactly as they are. Where these are variations on one operation, the change that clears all 3 is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"72e13428e3c163b20961077bc905169ee56cb3cbc20c287237fa518c2102f5ea"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Find.ChooseViewReferenceNull_Click (cognitive 16): form_Find.ChooseViewReferenceNull_Click 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. This shape REPEATS in the file: 2 other methods here (form_Find.ChangeViewReferenceFind_Click, form_Find.ToolStripOrphModify_Click) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 3 times rather than 3 independent problems. Splitting this body alone leaves the other 2 exactly as they are. Where these are variations on one operation, the change that clears all 3 is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8b8bf5d8c06c57f98ae0900a711b1808736487dec8a43ccc833d11a32e7433e"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Find.ToolStripOrphModify_Click (cognitive 16): form_Find.ToolStripOrphModify_Click 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. This shape REPEATS in the file: 2 other methods here (form_Find.ChangeViewReferenceFind_Click, form_Find.ChooseViewReferenceNull_Click) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 3 times rather than 3 independent problems. Splitting this body alone leaves the other 2 exactly as they are. Where these are variations on one operation, the change that clears all 3 is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0f9e36f6efde3bc3996b4345896de905611ed30ab35b52fc64e8903635dc7a1"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.GetAllFamilyFormulas (cognitive 16): form_Main.GetAllFamilyFormulas 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":"2017/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4b6789df3a51cd5bbe4a03b5d8f92d372c244e6eb0b9bdb883aea2d7ecce0e8"}},{"ruleId":"D2","level":"warning","message":{"text":"form_RevisionClouds.ButtonExport_Click (cognitive 16): form_RevisionClouds.ButtonExport_Click 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":"2017/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"d74a109841bf4d3e38f697ba8f9894a6b4038157f405f751b3fd37a4918d878b"}},{"ruleId":"D2","level":"warning","message":{"text":"Navis2JiraWin.worker_DoWork (cognitive 16): Navis2JiraWin.worker_DoWork 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":"2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a23f642ee3738b7c625a60776bca662e57ec2101135a02f68d19b94aa9b6e8d"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.DeleteUnusedTypes (cognitive 16): form_Main.DeleteUnusedTypes 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":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7c9b66b6d7e993acf9ebabe2c248ead7e58a4006b473778b070ced456534192"}},{"ruleId":"D2","level":"warning","message":{"text":"clsSettings.GetRoomParameters (cognitive 16): clsSettings.GetRoomParameters 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":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"c16b403730d385da6b7f2f5aec81a85a73058c8613e90305daca84fa901c4a32"}},{"ruleId":"D2","level":"warning","message":{"text":"Form_Main.UpdateViews (cognitive 16): Form_Main.UpdateViews 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":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"32789f44596c30f0c242aae0a9af88351705a923835173020e53493ea28195d3"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Config.SetFormControlsFromConfig (cognitive 16): form_Config.SetFormControlsFromConfig 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":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"06c943ef9e57409c89085592c9de31d93b5f58392bfebd5f6b49f4426c55fd36"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Find.ChangeViewReferenceFind_Click (cognitive 16): form_Find.ChangeViewReferenceFind_Click 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. This shape REPEATS in the file: 2 other methods here (form_Find.ChooseViewReferenceNull_Click, form_Find.ToolStripOrphModify_Click) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 3 times rather than 3 independent problems. Splitting this body alone leaves the other 2 exactly as they are. Where these are variations on one operation, the change that clears all 3 is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"312fb51b5224968d517732452513d61843d2ece4c9a64baf1a81359e541324a8"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Find.ChooseViewReferenceNull_Click (cognitive 16): form_Find.ChooseViewReferenceNull_Click 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. This shape REPEATS in the file: 2 other methods here (form_Find.ChangeViewReferenceFind_Click, form_Find.ToolStripOrphModify_Click) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 3 times rather than 3 independent problems. Splitting this body alone leaves the other 2 exactly as they are. Where these are variations on one operation, the change that clears all 3 is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"a39684ef23f0438c90899b0c8371a3be02afe374f7865d89a5bf04f4cc371956"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Find.ToolStripOrphModify_Click (cognitive 16): form_Find.ToolStripOrphModify_Click 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. This shape REPEATS in the file: 2 other methods here (form_Find.ChangeViewReferenceFind_Click, form_Find.ChooseViewReferenceNull_Click) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 3 times rather than 3 independent problems. Splitting this body alone leaves the other 2 exactly as they are. Where these are variations on one operation, the change that clears all 3 is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bd080558ea17ee9dab4ae2dcc8d71855516d8a0fcf4f38d8f0ab0ef33436470"}},{"ruleId":"D2","level":"warning","message":{"text":"form_Main.GetAllFamilyFormulas (cognitive 16): form_Main.GetAllFamilyFormulas 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":"2018/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"91a1bb3ad95b99ac5636263b6fd52a293826524efbb0c6cdb5421f62e5f002d9"}},{"ruleId":"D2","level":"warning","message":{"text":"CmdMain.Execute (cognitive 16): CmdMain.Execute 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":"2018/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Entry/CmdMain.vb"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a894e962e5c1e83827104f778704d3c4861108ccb8c2914ab31f5d2b4dded22"}},{"ruleId":"D2","level":"warning","message":{"text":"Navis2JiraWin.worker_DoWork (cognitive 16): Navis2JiraWin.worker_DoWork 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":"2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"769a2cbf6c45359aafa2c81bae2cfc060f41dd385c03b4a625c61ac6591a56b4"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AppMain.LoadItemsOne: MethodTooLong \u2014 LoadItemsOne runs 294 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 194 over it, 2.94\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2017/Entry/AppMain.vb"},"region":{"startLine":592}}}],"partialFingerprints":{"codehealthFindingId/v1":"20b2a319d094ef24b3b936618063f430466872bf82f640fe73b3646290bb7556"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AppMain.LoadItemsOne: MethodTooLong \u2014 LoadItemsOne runs 294 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 194 over it, 2.94\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2018/Entry/AppMain.vb"},"region":{"startLine":592}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b4fdc085a25570cbdf1a5c61cf89265f81a41e67029ddf5e81d9cc45a9f9090"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AppMain.LoadItemsOne: MethodTooLong \u2014 LoadItemsOne runs 294 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 194 over it, 2.94\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon/Entry/AppMain.vb"},"region":{"startLine":592}}}],"partialFingerprints":{"codehealthFindingId/v1":"58523db4e1629372f52183e08155c01f62e29b48338ab9cb2c1f5addbf713b45"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: clsRvtCategoryData.GetAllPropertyValues: MethodTooLong \u2014 GetAllPropertyValues runs 290 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 190 over it, 2.90\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a66aff5c2efed09e0bf07f99127e334a5d9061cae84e609940becf7b598c63f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: clsRvtCategoryData.GetAllPropertyValues: MethodTooLong \u2014 GetAllPropertyValues runs 290 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 190 over it, 2.90\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cfef66393cc262976625916221ceffe3626a3e46b4dcc8c072b62fd916d2d26"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: clsRvtCategoryData.GetAllPropertyValues: MethodTooLong \u2014 GetAllPropertyValues runs 290 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 190 over it, 2.90\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"3944ee28bd24bd112c8af3a17e99970712ded890490b4557f94b8c20841abb06"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: clsRvtCategoryData.GetAllPropertyValues: MethodTooLong \u2014 GetAllPropertyValues runs 290 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 190 over it, 2.90\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe413299281082e215501d0da36d45d6d60d8fdd05bed59de30d8b0a00faba82"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_RoomMasses.GenerateMasses: MethodTooLong \u2014 GenerateMasses runs 197 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 97 over it, 1.97\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"691f0ae921003a46952be06e8df69c613b210836dc98f6057ccce5db40074b08"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_RoomMasses.GenerateMasses: MethodTooLong \u2014 GenerateMasses runs 197 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 97 over it, 1.97\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"e953ec41a6fce805629a3adebcf4e4f83675049641fba471a0af9093bacd33c0"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_RoomMasses.GenerateMasses: MethodTooLong \u2014 GenerateMasses runs 197 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 97 over it, 1.97\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ac8741d5b5847b79384d04b34e2fb9b99e3d476ae90bbf3b111567423e08d93"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_RoomMasses.GenerateMasses: MethodTooLong \u2014 GenerateMasses runs 197 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 97 over it, 1.97\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd9bf57831e8dfe232c63508eda3d6eee00ef7cfcb53d77ea3ce7e7bfeb7efdb"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: clsONSort.SortObjects: MethodTooLong \u2014 SortObjects runs 181 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 81 over it, 1.81\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONSort.vb"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"72741d77c5e5f4223f5e9a36808149fe505fe50aeb656ab65406eab51f42d878"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: clsONSort.SortObjects: MethodTooLong \u2014 SortObjects runs 181 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 81 over it, 1.81\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONSort.vb"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"93f349bee505bc1530ed501b27aae6931e14c9476f2e4ae8f57ec1e6cc90f12c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: clsONSort.SortObjects: MethodTooLong \u2014 SortObjects runs 181 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 81 over it, 1.81\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONSort.vb"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"02838d016004aa22a02ac2061bc598428caf8a3da4400371863e92d8a80fc3c6"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: clsONSort.SortObjects: MethodTooLong \u2014 SortObjects runs 181 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 81 over it, 1.81\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONSort.vb"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc9f89749b5a1b13981805997af0667c5e7839034c5fe49339b3bd681aefd8d0"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: AppMain: ClassTooLong \u2014 659 significant lines (blank, comment-only and punctuation-only lines excluded), 10 methods. The bar is 400 significant lines; this is 259 over it, 1.65\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2017/Entry/AppMain.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"86e04bd68d27eb7acbeebe239498a7d3014dd95accdd0fa333794a4576012dfb"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: AppMain: ClassTooLong \u2014 659 significant lines (blank, comment-only and punctuation-only lines excluded), 10 methods. The bar is 400 significant lines; this is 259 over it, 1.65\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2018/Entry/AppMain.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c446165c0cb15bec05fe654b28bdd22b3091b75d4adcd82bf6100b458b66081f"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: AppMain: ClassTooLong \u2014 659 significant lines (blank, comment-only and punctuation-only lines excluded), 10 methods. The bar is 400 significant lines; this is 259 over it, 1.65\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon/Entry/AppMain.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"694d8edf5b54ec62693fc119d675cb6e945fa74dcfda7381359847891d0216a1"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AppMain.LoadItemsTwo: MethodTooLong \u2014 LoadItemsTwo runs 164 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 64 over it, 1.64\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2017/Entry/AppMain.vb"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7fd81fd5548c5047f44d67910bb9149d60733b789d5f24d68ee9f4774220837"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AppMain.LoadItemsTwo: MethodTooLong \u2014 LoadItemsTwo runs 164 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 64 over it, 1.64\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2018/Entry/AppMain.vb"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea57276b5ebc6b23f3c9a8c93c28d74c20ab8051f5115c60709710a468686dc1"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AppMain.LoadItemsTwo: MethodTooLong \u2014 LoadItemsTwo runs 164 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 64 over it, 1.64\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon/Entry/AppMain.vb"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef7b03e78cbbf6dca6671fc0471c4829a8a0362e2c271ce9847a65fe27c78fd3"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Form_Main.TagElementsInViews: MethodTooLong \u2014 TagElementsInViews runs 159 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 59 over it, 1.59\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b4422b1427b99b5af6b5bfd8098b7b269131c071cf9b4f77ee9fa90dd6a6c26"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Form_Main.TagElementsInViews: MethodTooLong \u2014 TagElementsInViews runs 159 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 59 over it, 1.59\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"f079c0b4cb7ca48b96578bfcabd7f8310a57159e6c3e7b307f1785847a0b72fb"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Form_Main.TagElementsInViews: MethodTooLong \u2014 TagElementsInViews runs 159 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 59 over it, 1.59\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"68e4f7a3ee1885d8583da1096a8f781b730c5ea6e34210c76d2ac3ef91a4e71d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Form_Main.TagElementsInViews: MethodTooLong \u2014 TagElementsInViews runs 159 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 59 over it, 1.59\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6e9fea2ed7abc8f434d74ac174132994bf422a8f914e8184bd73981400e0d02"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: clsReportingData.New(\u2026): MethodTooLong \u2014 New(\u2026) runs 158 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 58 over it, 1.58\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ade3b1232c26052354dcb303f5213fcda40f84c33cb0dc815ae135034dace50"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: clsReportingData.New(\u2026): MethodTooLong \u2014 New(\u2026) runs 158 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 58 over it, 1.58\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba3eee1e1cd7ddbf2a758e88866d00a7bd95bfb3474294c94d3af8d6cd3f0ad0"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: clsReportingData.New(\u2026): MethodTooLong \u2014 New(\u2026) runs 158 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 58 over it, 1.58\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"e85947025c47b7920b6c9c9fe316f81e1ce607e113b0fadd7c074131e4d97718"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: clsReportingData.New(\u2026): MethodTooLong \u2014 New(\u2026) runs 158 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 58 over it, 1.58\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"be8ffae24fcc40bff732a20bea01ad1eadd19f3db934d69eb6a747e9a0ac69a7"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: D9B42C3FEA6F4F9E8E1B62E993AA2512.Execute: MethodTooLong \u2014 Execute runs 157 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 57 over it, 1.57\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"de21979c4af56a1f0e3c013251580eb03eb1d00479c5d14a2e35d0985f74d4ad"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: D9B42C3FEA6F4F9E8E1B62E993AA2512.Execute: MethodTooLong \u2014 Execute runs 157 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 57 over it, 1.57\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"094b5c57c350733a70794ab90a3dc0519038a897bc86c6c608abca7ab3663e16"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: D9B42C3FEA6F4F9E8E1B62E993AA2512.Execute: MethodTooLong \u2014 Execute runs 157 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 57 over it, 1.57\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"b459cbb967741aa0dc17ac50816991c7e5137646a006504e2331a8b20b3d5ea1"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: D9B42C3FEA6F4F9E8E1B62E993AA2512.Execute: MethodTooLong \u2014 Execute runs 157 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 57 over it, 1.57\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"2283dafc11cbf5d78c31a74bb5c59a44e80bf62cf0cf8d1d913e76d64a6e59c7"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: clsExcel.UpdateWorksheetFromArray: MethodTooLong \u2014 UpdateWorksheetFromArray runs 152 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 52 over it, 1.52\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":704}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf25657e5db1c166425ccfc89a57d98959d763bdf076eb2e4ff0aff495aab256"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: clsExcel.UpdateWorksheetFromArray: MethodTooLong \u2014 UpdateWorksheetFromArray runs 152 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 52 over it, 1.52\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":704}}}],"partialFingerprints":{"codehealthFindingId/v1":"e71dec7878bb19cb216bb4d4dc2b077c536d2f0c8faaf839ada7cd742cfa0393"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: clsExcel.UpdateWorksheetFromArray: MethodTooLong \u2014 UpdateWorksheetFromArray runs 152 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 52 over it, 1.52\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":704}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6e27f485a86a6edadf46fcb4ccab648db5613d6e1a18f087ee4ace473660f8a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: clsExcel.UpdateWorksheetFromArray: MethodTooLong \u2014 UpdateWorksheetFromArray runs 152 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 52 over it, 1.52\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":704}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a007be49b6f987b2a25db513e0c5510d0554356bcc26671d086977448893ce2"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_Sync.UpdateElementData: MethodTooLong \u2014 UpdateElementData runs 144 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 44 over it, 1.44\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d979e3e89c342db12ebf6d9fd8fb3d35f7b0c662021b3d0da74df45c75141ef"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_Sync.UpdateElementData: MethodTooLong \u2014 UpdateElementData runs 144 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 44 over it, 1.44\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"4357097771fc799f2e7c7a414ec4568139210b55e0e960ca4270d9fdda7663be"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_Sync.UpdateElementData: MethodTooLong \u2014 UpdateElementData runs 144 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 44 over it, 1.44\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"35188e3f3f33a8ac33e834db1349cc0500dd69d3a1680833fb2ce3c7f037d78b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_Sync.UpdateElementData: MethodTooLong \u2014 UpdateElementData runs 144 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 44 over it, 1.44\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"40deb6f8ec394be635920b7bff68e5a782dbdb03f8f6b34cae6f2ad5c9e6a632"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_Main.CalculatePoints: MethodTooLong \u2014 CalculatePoints runs 141 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 41 over it, 1.41\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb5ce5af5d627ea66bdeaa6eb55b1d0baab9992e58cee3e73369a12c3286900d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_Main.CalculatePoints: MethodTooLong \u2014 CalculatePoints runs 141 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 41 over it, 1.41\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"1011cb7488560c7c4e7e8ccb61b78ecc66870c60280ff12b196827c277f3bbf6"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_Main.CalculatePoints: MethodTooLong \u2014 CalculatePoints runs 141 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 41 over it, 1.41\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0b747ba95fa7002594fa5b07ea312e771766bb5a4678d37d5674d312e70d3b2"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_Main.CalculatePoints: MethodTooLong \u2014 CalculatePoints runs 141 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 41 over it, 1.41\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3738b23886a5d95a94805caa8373147c30145d911026f3cd57da4b02fe7c215"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: form_Sync: ClassTooLong \u2014 552 significant lines (blank, comment-only and punctuation-only lines excluded), 18 methods. The bar is 400 significant lines; this is 152 over it, 1.38\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ab8540546de5f28769d6605b92d75baf28407c65486ec12e09b96fe7d492a1f"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: form_Sync: ClassTooLong \u2014 552 significant lines (blank, comment-only and punctuation-only lines excluded), 18 methods. The bar is 400 significant lines; this is 152 over it, 1.38\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4ca2ef924a14854ea5cdf9532eefb79da375d0b324edbe1db9481f708851287"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: form_Sync: ClassTooLong \u2014 552 significant lines (blank, comment-only and punctuation-only lines excluded), 18 methods. The bar is 400 significant lines; this is 152 over it, 1.38\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"74c7ff5852e6d4a59607cc70409095b70e010997946e8256d84aec384a99dc89"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: form_Sync: ClassTooLong \u2014 552 significant lines (blank, comment-only and punctuation-only lines excluded), 18 methods. The bar is 400 significant lines; this is 152 over it, 1.38\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2f29b932e3a0dcbc9099f0b8cb7d956e233d69a4afc351188e0b1f294d5ac1d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_PlacePointsFromFile.PlacePoints: MethodTooLong \u2014 PlacePoints runs 138 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 38 over it, 1.38\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"76076ca9d46e06a8ba042f8896e3518784eb6afa7c8069c2bef11f038ec45163"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_PlacePointsFromFile.PlacePoints: MethodTooLong \u2014 PlacePoints runs 138 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 38 over it, 1.38\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"283a55691c5b0cb4148f49fb6fe0f87932d4874ffec36be8759377a77bbbc7cc"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_PlacePointsFromFile.PlacePoints: MethodTooLong \u2014 PlacePoints runs 138 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 38 over it, 1.38\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"e67db853d38dd366e921d7e1c338c66322dd5d9f11a3e326ba8d48ba9e22a214"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_PlacePointsFromFile.PlacePoints: MethodTooLong \u2014 PlacePoints runs 138 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 38 over it, 1.38\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"058b75197f00e498a77a8416c3ead9b9e70e7469183462c50fb57b580b96093a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_RoomMasses.GenerateMasses: MethodTooLong \u2014 GenerateMasses runs 134 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 34 over it, 1.34\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"762a395c6bdd07cd1dd663c8d65fa73f9cc6e432ee564967d66be932a6063c30"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_RoomMasses.GenerateMasses: MethodTooLong \u2014 GenerateMasses runs 134 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 34 over it, 1.34\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"822d858cd10e6e5e9a13050c415eee0d9ad8ea6780c85e8221d08d2f68c5d3d4"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_RoomMasses.GenerateMasses: MethodTooLong \u2014 GenerateMasses runs 134 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 34 over it, 1.34\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ea088d5172eef8aed0cacd522d6555f7f8de8d681b5f186cd961c3412b45809"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_RoomMasses.GenerateMasses: MethodTooLong \u2014 GenerateMasses runs 134 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 34 over it, 1.34\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"89ebd8190eba49d26f8b33e67e7a097c2010e9a25ef5a10cdcf0b04b487d4f51"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Entry/AppMain.vb: FileTooLong \u2014 669 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 169 over it, 1.34\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2017/Entry/AppMain.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5652c666bc4193f15ef4282aae0a458383cdeeaf4c240faca71b7df90119dc5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Entry/AppMain.vb: FileTooLong \u2014 669 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 169 over it, 1.34\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2018/Entry/AppMain.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"184813cafea855d74441c4aab24571147267df28a107aaaabe390a59e54cfa51"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Entry/AppMain.vb: FileTooLong \u2014 669 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 169 over it, 1.34\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon/Entry/AppMain.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f2f236907b1571800ace84b173cdd99766f83b26db46aac359b9bfb869e2aa4"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: D9B42C3FEA6F4F9E8E1B62E993AA2513.Execute: MethodTooLong \u2014 Execute runs 133 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 33 over it, 1.33\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2fd43574c87693b05f5c1f87923e4566f469d8178ba7610a341b6907a86eddc"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: D9B42C3FEA6F4F9E8E1B62E993AA2513.Execute: MethodTooLong \u2014 Execute runs 133 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 33 over it, 1.33\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b1c011a3ddb178d05e5af97cacc4cea4901a18d23b4fccad09835ee30fa96f9"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: D9B42C3FEA6F4F9E8E1B62E993AA2513.Execute: MethodTooLong \u2014 Execute runs 133 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 33 over it, 1.33\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fc5c5104f4ef6afdc7b5a072631af6d12a2aaa9ef602c7dc32ac41b979108d0"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: D9B42C3FEA6F4F9E8E1B62E993AA2513.Execute: MethodTooLong \u2014 Execute runs 133 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 33 over it, 1.33\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"e70fdf92f7fe0f1741eaf27bea0feb277e6238e4d701edb0fd2f3e7ed0bf8848"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: clsReportingData: ClassTooLong \u2014 531 significant lines (blank, comment-only and punctuation-only lines excluded), 6 methods. The bar is 400 significant lines; this is 131 over it, 1.33\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4760472f5da334d36fdcb7e16d3719bf9fc8bf0517f571d1f54f7cce3d711dcb"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: clsReportingData: ClassTooLong \u2014 531 significant lines (blank, comment-only and punctuation-only lines excluded), 6 methods. The bar is 400 significant lines; this is 131 over it, 1.33\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7a161f2a83249e3fb3d115f3b912e167fb17789bade75d932f364bbb14f26ec"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: clsReportingData: ClassTooLong \u2014 531 significant lines (blank, comment-only and punctuation-only lines excluded), 6 methods. The bar is 400 significant lines; this is 131 over it, 1.33\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cb2dfb9a019b73a69f1268b35b09c8cb40848154bb851cc996b239d6f413a9c"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: clsReportingData: ClassTooLong \u2014 531 significant lines (blank, comment-only and punctuation-only lines excluded), 6 methods. The bar is 400 significant lines; this is 131 over it, 1.33\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c35928c73760a97913e3d3bd92f58ca257e1691b5ead9e3627a1886e5105eec1"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: RVTCurveUtils: ClassTooLong \u2014 527 significant lines (blank, comment-only and punctuation-only lines excluded), 10 methods. The bar is 400 significant lines; this is 127 over it, 1.32\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"54b0bc1dac56f860e1caab6fdff0fd13d8d9750e87bf938ad9b6fc40b2327989"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: RVTCurveUtils: ClassTooLong \u2014 527 significant lines (blank, comment-only and punctuation-only lines excluded), 10 methods. The bar is 400 significant lines; this is 127 over it, 1.32\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d9bb7092f7b06717a54f748a430f1755810bb10da34941efce3fb47aeb536bd"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: RVTCurveUtils: ClassTooLong \u2014 527 significant lines (blank, comment-only and punctuation-only lines excluded), 10 methods. The bar is 400 significant lines; this is 127 over it, 1.32\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cea50323c66545957d8785820c81876a2ad9f043a58d9a505862997068762576"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: RVTCurveUtils: ClassTooLong \u2014 527 significant lines (blank, comment-only and punctuation-only lines excluded), 10 methods. The bar is 400 significant lines; this is 127 over it, 1.32\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a8f0e2f78ce49f11297638db2ee05652fd4e02301b40d0bf011e73849cf04b7"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: clsExcel: ClassTooLong \u2014 514 significant lines (blank, comment-only and punctuation-only lines excluded), 13 methods. The bar is 400 significant lines; this is 114 over it, 1.29\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"02a91d89f786d097abd3983ce43dfb358dccc76767b2323b7215ae5cce60d6ce"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: clsExcel: ClassTooLong \u2014 514 significant lines (blank, comment-only and punctuation-only lines excluded), 13 methods. The bar is 400 significant lines; this is 114 over it, 1.29\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6657fcb93b66e1bccd6a329f5dbc62a60d52a6459b0096e75adc5336ab8fc64"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: clsExcel: ClassTooLong \u2014 514 significant lines (blank, comment-only and punctuation-only lines excluded), 13 methods. The bar is 400 significant lines; this is 114 over it, 1.29\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"029ca3a3825d2b4adde5d3902e8bf82ca88a1dc43cbcc2f4ca6668f1a4ed1428"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: clsExcel: ClassTooLong \u2014 514 significant lines (blank, comment-only and punctuation-only lines excluded), 13 methods. The bar is 400 significant lines; this is 114 over it, 1.29\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"695625f389d18edb77d145907d4975c3ac8d45982f952a9e7f630e04ad30757f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: clsReportingData.New(\u2026): MethodTooLong \u2014 New(\u2026) runs 122 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 22 over it, 1.22\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2a56c014f47de7343e6ba2f1374767b943a3f4af52f642b7d2ce5258e7c2adc"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: clsReportingData.New(\u2026): MethodTooLong \u2014 New(\u2026) runs 122 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 22 over it, 1.22\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c89e22f51845129d231a75b85f3e6fd6bc89edc5bdb4253ee890de4fbd9a438"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: clsReportingData.New(\u2026): MethodTooLong \u2014 New(\u2026) runs 122 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 22 over it, 1.22\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9da72a1747eed6314c3b01a8e35c3858512145f8211bea63bb1239d90381227"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: clsReportingData.New(\u2026): MethodTooLong \u2014 New(\u2026) runs 122 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 22 over it, 1.22\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"27648cd07cd6d983bda0c581f3bc5da049d29a2f469d718b6455fc91fd7bcfbc"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: RVTFamilyMassUtils.RVTCornerPtSurface: MethodTooLong \u2014 RVTCornerPtSurface runs 121 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 21 over it, 1.21\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"c756e4983ae5bee94088998245472f5b98bf71aa47fd887f7a423e16ff3775a4"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: RVTFamilyMassUtils.RVTCornerPtSurface: MethodTooLong \u2014 RVTCornerPtSurface runs 121 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 21 over it, 1.21\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec0d9bc531f93c7f6f4c23a6539880caa15212cf4c6b4b7630211cf80f30ce40"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: RVTFamilyMassUtils.RVTCornerPtSurface: MethodTooLong \u2014 RVTCornerPtSurface runs 121 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 21 over it, 1.21\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d5cc81d88fa25d3ca123993de48e23bc4fec17b936dac39fa2ac84c73ecb909"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: RVTFamilyMassUtils.RVTCornerPtSurface: MethodTooLong \u2014 RVTCornerPtSurface runs 121 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 21 over it, 1.21\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca8e53fa1199908b0bd8db4276b85e96b66b711346fbadb894518d5f4238983e"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: clsRvtCategoryData: ClassTooLong \u2014 474 significant lines (blank, comment-only and punctuation-only lines excluded), 5 methods. The bar is 400 significant lines; this is 74 over it, 1.19\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d634e560502f6d5e6d76005e901c380f29031ec49201d7f2c7f7874ebe6e67c"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: clsRvtCategoryData: ClassTooLong \u2014 474 significant lines (blank, comment-only and punctuation-only lines excluded), 5 methods. The bar is 400 significant lines; this is 74 over it, 1.19\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d21360e8830df0b8a75178db736949789ae28053f7990fd5309c612904c113c"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: clsRvtCategoryData: ClassTooLong \u2014 474 significant lines (blank, comment-only and punctuation-only lines excluded), 5 methods. The bar is 400 significant lines; this is 74 over it, 1.19\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"01f08e86b5a28381c19934f04b5357ca9cba8bec203b0bc56fad27dc5411121e"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: clsRvtCategoryData: ClassTooLong \u2014 474 significant lines (blank, comment-only and punctuation-only lines excluded), 5 methods. The bar is 400 significant lines; this is 74 over it, 1.19\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"df634e33679cc399535737ca9385cffb8768b7195816dc578a3fc2b0f267fb11"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_Sync.SyncRooms: MethodTooLong \u2014 SyncRooms runs 118 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 18 over it, 1.18\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ee73b2ee67f81f07febbfb2e405a53622572ea44954d2734c093ab202cf3636"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_DataManager.UpdatePoints: MethodTooLong \u2014 UpdatePoints runs 118 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 18 over it, 1.18\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb3cac372f1d6e95c9455cf2d72de930e027c08ab5aba508e03fbadd951027e3"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_Sync.SyncRooms: MethodTooLong \u2014 SyncRooms runs 118 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 18 over it, 1.18\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"c18f5a261a81246401976ba580561c473a8d55647d670a7fa43e8119e6a9f789"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_DataManager.UpdatePoints: MethodTooLong \u2014 UpdatePoints runs 118 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 18 over it, 1.18\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7f7cb925079c966e9eb14899080b25d0a105b89e5b365a35ba46baba284feaf"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_Sync.SyncRooms: MethodTooLong \u2014 SyncRooms runs 118 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 18 over it, 1.18\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e9b8eac2d7c2c3f4306d0e1ca3a536135eebddb7763a3b9c6e422c894e65024"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_DataManager.UpdatePoints: MethodTooLong \u2014 UpdatePoints runs 118 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 18 over it, 1.18\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"d88d43ae694e0c5b8442491a37cf9ca77d3a1168f2e12d0c41ad5f72c36c013d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_Sync.SyncRooms: MethodTooLong \u2014 SyncRooms runs 118 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 18 over it, 1.18\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"34f91fbaad9afd5dac003f3b4f589e3ae339ffc7673a9933ae2691a024fe3c96"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_DataManager.UpdatePoints: MethodTooLong \u2014 UpdatePoints runs 118 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 18 over it, 1.18\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"f71252ab4e43fca5650ffa07c064e2eb7e0efbf90e32fd21c53690d8fe797152"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: clsAutomationTest.Test1: MethodTooLong \u2014 Test1 runs 116 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 16 over it, 1.16\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"95ffcf456226363fea6e1d447788081d0e4c9ce97049894b72cfea2f1f6848f1"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: clsAutomationTest.Test1: MethodTooLong \u2014 Test1 runs 116 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 16 over it, 1.16\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe1a5819f3bba2f10d9ac5961ed805ea089c3bddd46d41c7b3ee5b4ed927c958"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: clsAutomationTest.Test1: MethodTooLong \u2014 Test1 runs 116 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 16 over it, 1.16\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"36a8b9b10ca19ee0a58f0279aa5ce4778ccce43847e812c39fb782df605957c3"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: clsAutomationTest.Test1: MethodTooLong \u2014 Test1 runs 116 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 16 over it, 1.16\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"c21bb77a9d5aa4893ee7195ca19a370d92dfca9599d1e5d2114754f546c33189"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: form_Data: ClassTooLong \u2014 460 significant lines (blank, comment-only and punctuation-only lines excluded), 20 methods. The bar is 400 significant lines; this is 60 over it, 1.15\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fbe2b9b94d1e22660cbdf8da836ad5cae308d5c4e32d5db2afc56d1614436b4"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: form_Data: ClassTooLong \u2014 460 significant lines (blank, comment-only and punctuation-only lines excluded), 20 methods. The bar is 400 significant lines; this is 60 over it, 1.15\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d19f76188eba390e46d55e908547e10b7e33307945a96543535a2daf842bcb3"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: form_Data: ClassTooLong \u2014 460 significant lines (blank, comment-only and punctuation-only lines excluded), 20 methods. The bar is 400 significant lines; this is 60 over it, 1.15\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"486b65e0def53131087979e7eb6b8cb11494c77c5facc011189569543b2c8778"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: form_Data: ClassTooLong \u2014 460 significant lines (blank, comment-only and punctuation-only lines excluded), 20 methods. The bar is 400 significant lines; this is 60 over it, 1.15\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ddf826d624d13e86adeeb67f02f06f6e53d9072cbb6ed457d5d1c1ec549aa0d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: UI/form_Sync.vb: FileTooLong \u2014 558 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 58 over it, 1.12\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"59aab6b7ea3c6cacc9999649b1abfd1e8e0ae72bed687317f4b856e78e50ba82"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: UI/form_Sync.vb: FileTooLong \u2014 558 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 58 over it, 1.12\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"64b3bd34be987cc5c1ad3fae73c4325427d694c3c56b16010254c9e3705346a2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: UI/form_Sync.vb: FileTooLong \u2014 558 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 58 over it, 1.12\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d81152aad61b00f87897798da36f66283c338cae69d418528fa416dc0d9dab6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: UI/form_Sync.vb: FileTooLong \u2014 558 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 58 over it, 1.12\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3c3fbcf92271659e690ee09ecd83a779a24fa6bcfc6e530607ecf1922025561"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Form_Main: ClassTooLong \u2014 429 significant lines (blank, comment-only and punctuation-only lines excluded), 23 methods. The bar is 400 significant lines; this is 29 over it, 1.07\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"66de3d7b9b9875000dd7e1b284fe979eb7d571baf3c0b7ed1b964179deed80e9"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Form_Main: ClassTooLong \u2014 429 significant lines (blank, comment-only and punctuation-only lines excluded), 23 methods. The bar is 400 significant lines; this is 29 over it, 1.07\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"668254ccb19a954851f30063da8e645998a977dcff6c797733f5a246d9bde6e9"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Form_Main: ClassTooLong \u2014 429 significant lines (blank, comment-only and punctuation-only lines excluded), 23 methods. The bar is 400 significant lines; this is 29 over it, 1.07\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"08c29362610761592018093243eacbe3f80cb8589fe7f1b6a87514d1c89350b9"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Form_Main: ClassTooLong \u2014 429 significant lines (blank, comment-only and punctuation-only lines excluded), 23 methods. The bar is 400 significant lines; this is 29 over it, 1.07\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"15f89e366c07be397f8cd96da404f01527c2116babf5f78f78509d4718b2bd4a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Classes/clsReportingData.vb: FileTooLong \u2014 533 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 33 over it, 1.07\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2dc335b50127a2c838a4da2c0ea1b50935bb9b98e7e30923cc6af4e1f52e9f7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Classes/clsReportingData.vb: FileTooLong \u2014 533 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 33 over it, 1.07\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"864ce0cea8949f6cfd3848d662860dd9b2ca0897c7763be60c668257c1bec793"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Classes/clsReportingData.vb: FileTooLong \u2014 533 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 33 over it, 1.07\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"edb4c919fb899f3f39d2fff997a1f7940147bb53bc48474ef24ba481291fb4f6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Classes/clsReportingData.vb: FileTooLong \u2014 533 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 33 over it, 1.07\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"82524fe99d60620cae725f537d6f971ae857a13e9d3d67f14abe058575d68522"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Translators/RVTCurveUtils.vb: FileTooLong \u2014 531 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 31 over it, 1.06\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce85810995668a0491f426d60eb1f8d4c2f22167fdbb630af57f9d923878d193"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Translators/RVTCurveUtils.vb: FileTooLong \u2014 531 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 31 over it, 1.06\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ebc766b5d39d2cf32b0256634b112944ad0aff8a605588787d42bf2cd400db1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Translators/RVTCurveUtils.vb: FileTooLong \u2014 531 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 31 over it, 1.06\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e19b0fbb3d028e93d292ddf66a6c0f9e11d0f8e546bf9c94d98a82557843dcf5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Translators/RVTCurveUtils.vb: FileTooLong \u2014 531 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 31 over it, 1.06\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5c0cbb27e61ed8b1421addcf501c6661a23058827dda7ae2234a7b0992c9a24"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Data/clsExcel.vb: FileTooLong \u2014 522 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 22 over it, 1.04\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"466221436803716f701d1f515b5accb45c2d3e73ee2abcd03c5b857c1f566fba"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Data/clsExcel.vb: FileTooLong \u2014 522 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 22 over it, 1.04\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"78613be0d71e0f4cc4187036807e118d31ac21c9220641f055b5178ef6a7d6cc"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Data/clsExcel.vb: FileTooLong \u2014 522 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 22 over it, 1.04\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"79e8f1a64569d8d8803886df518691300e61f931f6f109ef81cf997b814655e7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Data/clsExcel.vb: FileTooLong \u2014 522 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 22 over it, 1.04\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c74871683cfb46030123673a2600a2bd633953095d40c07df16be2e88c790fdd"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: clsSettings.UpdateElementValues: MethodTooLong \u2014 UpdateElementValues runs 104 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 4 over it, 1.04\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":738}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc6ddd95543563598467c609b299f46b1800045e96196eedeec462535583b84f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: clsSettings.UpdateElementValues: MethodTooLong \u2014 UpdateElementValues runs 104 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 4 over it, 1.04\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":738}}}],"partialFingerprints":{"codehealthFindingId/v1":"b66b2b0889d0cfa7533e63b901c6dcd39c61097d6318d17c7f0833615df80b5d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: clsSettings.UpdateElementValues: MethodTooLong \u2014 UpdateElementValues runs 104 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 4 over it, 1.04\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":738}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec608f7bc185c0173f6bd32b64f55f9045f20ca3fbd324c6710bb48af998520a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: clsSettings.UpdateElementValues: MethodTooLong \u2014 UpdateElementValues runs 104 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 4 over it, 1.04\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":738}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7dcf22ef30a5f0675cc0a08f01bdab25ddbf67a78cf2a5439008e0419396c7f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_ImportMain.Button_Import_Click: MethodTooLong \u2014 Button_Import_Click runs 103 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 3 over it, 1.03\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"8abfc131948004947876ec7e4fb324b7c16f2b86e21c22a9a4817efdbf7da579"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_ImportMain.Button_Import_Click: MethodTooLong \u2014 Button_Import_Click runs 103 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 3 over it, 1.03\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ba634bb2130794be95eb5a25b219543bd8903bf6d2479c2a5bb91b678691f3c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_ImportMain.Button_Import_Click: MethodTooLong \u2014 Button_Import_Click runs 103 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 3 over it, 1.03\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"58fdbf7662bdb24bf9bc777a6935b2d6b5945c1140ad44b6e1c09fcff9a48f50"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: form_ImportMain.Button_Import_Click: MethodTooLong \u2014 Button_Import_Click runs 103 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 3 over it, 1.03\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"923373544c6fc8ef7ea8dedcaaa7d81d8146fa5fa94dc1ec662074900fafd1d2"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (25 members, 34 shared lines): 2015/Case.ApplySysOrient/API/clsAPI.cs:110-150 | 2015/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs:110-150 | 2015/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs:110-151 | 2015/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs:110-151 | 2015/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs:110-148 | 2015/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs:110-150 | 2015/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs:110-150 | 2015/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs:110-150 | 2016/Case.ApplySysOrient/API/clsAPI.cs:110-150 | 2016/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs:110-150 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs:110-151 | 2016/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs:110-151 | 2016/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs:110-148 | 2016/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs:110-150 | 2016/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs:110-150 | 2016/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs:110-150 | 2017/Case.ApplySysOrient/API/clsAPI.cs:110-150 | 2017/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs:110-150 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs:110-151 | 2017/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs:110-151 | 2017/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs:110-148 | 2017/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs:110-150 | 2017/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs:110-150 | 2017/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs:110-150 | 2018/Case.ApplySysOrient/API/clsAPI.cs:110-150 \u2014 These 25 members are variants of one another: a block of 34 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 25 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 25 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1aff39625677fbda25992acefb758e83e0068428d45e19e4a83f9c71c954e40"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (12 members, 22 shared lines): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:38-88 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:36-99 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:431-513 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:38-88 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:36-99 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:431-513 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:38-88 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:36-99 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:431-513 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:38-88 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:36-99 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:431-513 \u2014 These 12 members are variants of one another: a block of 22 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 12 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 12 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"4abc35848d74cc0cd2e3029c88c6bd7a6ac1dd31e6475a360c6408b66aa8a29b"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (8 members, 66 shared lines): 2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:266-338 | 2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:348-424 | 2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:266-338 | 2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:348-424 | 2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:266-338 | 2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:348-424 | 2018/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:266-338 | 2018/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:348-424 \u2014 These 8 members are variants of one another: a block of 66 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 8 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 8 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"e214d490081853f99c8e1ecd75d4e744b71e3f01b54a83f5e0b00eea5fcdcbd6"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (8 members, 61 shared lines): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:348-430 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:798-879 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:348-430 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:798-879 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:348-430 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:798-879 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:348-430 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:798-879 \u2014 These 8 members are variants of one another: a block of 61 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 8 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 8 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"e866b9e5be39b5693e832fc8e46a29f18f6e0f2211fd85838de99f14892b9918"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (8 members, 55 shared lines): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb:32-281 | 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb:29-232 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb:32-281 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb:29-232 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb:32-281 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb:29-232 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb:32-281 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb:29-232 \u2014 These 8 members are variants of one another: a block of 55 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 8 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 8 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"25a701127c0d93e330851e8b1642343225b16faa9674db5d2979c9643efcab7c"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (8 members, 39 shared lines): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:36-99 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:431-513 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:36-99 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:431-513 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:36-99 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:431-513 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:36-99 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:431-513 \u2014 These 8 members are variants of one another: a block of 39 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 8 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 8 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"c59f18c73859299b1116f349c48aaea1e9fe6e15ac6f9a1a3214c7bd0766399d"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (8 members, 35 shared lines): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:190-245 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:257-329 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:190-245 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:257-329 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:190-245 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:257-329 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:190-245 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:257-329 \u2014 These 8 members are variants of one another: a block of 35 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 8 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 8 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"41dffdc07fc7e7c68aaa315f4320ac26ebf4a6d6082bd1b05ef9f660948942d4"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (8 members, 23 shared lines): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:257-329 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:341-419 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:257-329 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:341-419 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:257-329 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:341-419 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:257-329 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:341-419 \u2014 These 8 members are variants of one another: a block of 23 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 8 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 8 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"84b75b2df94ed556c49a32349c4fa414c29cf18678520e7e94d05584ed0d793b"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 354 shared lines): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb:390-829 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb:390-829 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb:390-829 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb:390-829 \u2014 These 4 members are variants of one another: a block of 354 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":390}}}],"partialFingerprints":{"codehealthFindingId/v1":"b024a0b7f6ad3a2a461c6ed619cd23d9a46f01be950e4c52cd10c1e3d354e48e"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 330 shared lines): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:44-412 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:44-412 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:44-412 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:44-412 \u2014 These 4 members are variants of one another: a block of 330 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"11fd57a3206498a1e6e315a45daa1c8aeb668fb565d003dc72b57cc09e317a69"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 223 shared lines): 2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:195-431 | 2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:195-431 | 2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:195-431 | 2018/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:196-432 \u2014 These 4 members are variants of one another: a block of 223 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ef987c5cac9a9f9b5ce2185dd232a14e465486b9984bb1122ffa76e522ca93b"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 192 shared lines): 2015/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb:45-239 | 2016/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb:45-239 | 2017/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb:45-239 | 2018/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb:45-239 \u2014 These 4 members are variants of one another: a block of 192 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"829e110edc7dc91699ef437da2264c997e942c6141dc17e561908418dc8ae124"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 157 shared lines): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:54-237 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:54-237 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:54-237 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:54-237 \u2014 These 4 members are variants of one another: a block of 157 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"38350570a2ae1e5b15b8575ae09d044287b983b6d8c63329df6ff6d717356f76"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 145 shared lines): 2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:238-414 | 2016/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:238-414 | 2017/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:238-414 | 2018/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:234-410 \u2014 These 4 members are variants of one another: a block of 145 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"c32e9be1115eb07b1b9446681a088982d03f0292e98c5ea129193ef92c177417"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 111 shared lines): 2015/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs:67-192 | 2016/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs:67-190 | 2017/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs:67-190 | 2018/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs:62-185 \u2014 These 4 members are variants of one another: a block of 111 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f3e9593c2b172fe44a7573aedf4451e52def0492161d3fcd424c27c267ec845"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 97 shared lines): 2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:248-378 | 2016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:248-378 | 2017/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:248-378 | 2018/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:248-378 \u2014 These 4 members are variants of one another: a block of 97 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"38232713fa7482be9231816a7b55563b042f99d4ab1070c77b42594a26fcc52d"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 81 shared lines): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:304-407 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:304-407 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:304-407 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:304-407 \u2014 These 4 members are variants of one another: a block of 81 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":304}}}],"partialFingerprints":{"codehealthFindingId/v1":"2965075deb5e799d3bc257d136e1b6d617dcf39816a54afb173a7a62ee4758b2"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 76 shared lines): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:584-713 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:584-713 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:584-713 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:584-713 \u2014 These 4 members are variants of one another: a block of 76 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":584}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a419b41362fd6c7c49f0f6857a06a9bd2d427a6c3a22071915f43bb3760670d"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 75 shared lines): 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:409-490 | 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:409-490 | 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:409-490 | 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:409-490 \u2014 These 4 members are variants of one another: a block of 75 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":409}}}],"partialFingerprints":{"codehealthFindingId/v1":"7efafdb5d28a518111820508cde15d4ebfd18eb40c2ccf64fac3bf85853d7adb"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 59 shared lines): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb:31-105 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb:31-105 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb:31-105 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb:31-105 \u2014 These 4 members are variants of one another: a block of 59 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"38f604f3a3a1a7a443d3177a97655d43b1df3d71a4a67888cfc217265c6e4f58"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 58 shared lines): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:51-261 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:51-261 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:51-261 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:51-261 \u2014 These 4 members are variants of one another: a block of 58 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"93aff42ec2626f79b893a2b355d87dbe2c173def6238d83f00f37e32b1587ba2"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 55 shared lines): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb:61-117 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb:61-117 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb:61-117 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb:61-117 \u2014 These 4 members are variants of one another: a block of 55 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a3ae73fe5b5e764434aa662b536c03b9e5172c30c4712d4fb7c9f755a8fe375"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 54 shared lines): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:680-786 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:680-786 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:680-786 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:680-786 \u2014 These 4 members are variants of one another: a block of 54 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":680}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e436dcde7f0318623db18a9e008141436310211e6eef406aeca72775254a86e"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 52 shared lines): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb:29-96 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb:29-96 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb:29-96 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb:29-96 \u2014 These 4 members are variants of one another: a block of 52 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"98512ab8dc821310cf84a8619bd8d93c8ceb21e8d4b35e3997260679fd40ba2d"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 52 shared lines): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:40-194 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:40-194 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:40-194 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:40-194 \u2014 These 4 members are variants of one another: a block of 52 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec708e82e90e43ca28862e5bc2088c02a8e2af13d835322f19e933daad72ced3"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 46 shared lines): 2015/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:53-188 | 2016/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:53-188 | 2017/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:53-188 | 2018/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:53-188 \u2014 These 4 members are variants of one another: a block of 46 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"9df008a6ad4f67ce9cae705762066a1f91f009b5cc8830e7aa9d5017497beab6"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 42 shared lines): 2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:267-354 | 2016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:267-354 | 2017/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:267-354 | 2018/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:267-354 \u2014 These 4 members are variants of one another: a block of 42 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"3eb78334680d2c69e89f7f82d71ff2c7730b10c3d13f0ac1f80f723b648a6b5a"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 31 shared lines): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONSort.vb:59-337 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONSort.vb:59-337 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONSort.vb:59-337 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONSort.vb:59-337 \u2014 These 4 members are variants of one another: a block of 31 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONSort.vb"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ddaf75f83fc00ac78713f242733a889ceb6c16126cfb96c905fe212dfdc17cf"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 31 shared lines): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb:196-282 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb:196-282 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb:196-282 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb:196-282 \u2014 These 4 members are variants of one another: a block of 31 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"86d390ceb960e3eae03be2a80c882af0c49ea06b1a6e7bab6ad4480d8b1920b0"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 30 shared lines): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:149-199 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:149-199 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:149-199 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:149-199 \u2014 These 4 members are variants of one another: a block of 30 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc0f46c3089f91017091ac7fc33c9bc4e5755536121bd55aafc4c585d3f7c3ab"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 29 shared lines): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:255-336 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:255-336 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:255-336 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:255-336 \u2014 These 4 members are variants of one another: a block of 29 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5ceefa1fab4839c4a66fa0b4ca7f72c7e611087f02918d1747976ab0b52b9ab"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 25 shared lines): 2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb:161-269 | 2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb:161-269 | 2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb:161-269 | 2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb:161-269 \u2014 These 4 members are variants of one another: a block of 25 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5b4932496a18550e1fd20eff02a2f4b10e0001fc128730946912991354a5ecf"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (24 corresponding lines): 2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/SplitContainerEx.vb:32-55 | 2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/SplitContainerEx.vb:32-55 \u2014 These two members are one piece of code written twice and then edited apart: 24 consecutive lines correspond almost exactly, broken only by small local edits. Most of that correspondence is NOT reported as duplicated blocks below \u2014 the edits cut it into fragments and only the largest of them clear the block floor, so the rows below understate it. The repair is at the members\u0027 grain \u2014 factor the shared implementation into one the two call with their differences as parameters or as an injected step, or, where the difference is systematic (an extra return value, one transport against another), generate one from the other. Left alone, the next edit has to be made twice and the two will drift further apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/SplitContainerEx.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ace4ec5ec13befcf7c9ad4f9c6f661ccd76e65c897b7c5a03a0d3511934ca9b"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (24 corresponding lines): 2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/SplitContainerEx.vb:32-55 | 2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/SplitContainerEx.vb:32-55 \u2014 These two members are one piece of code written twice and then edited apart: 24 consecutive lines correspond almost exactly, broken only by small local edits. Most of that correspondence is NOT reported as duplicated blocks below \u2014 the edits cut it into fragments and only the largest of them clear the block floor, so the rows below understate it. The repair is at the members\u0027 grain \u2014 factor the shared implementation into one the two call with their differences as parameters or as an injected step, or, where the difference is systematic (an extra return value, one transport against another), generate one from the other. Left alone, the next edit has to be made twice and the two will drift further apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/SplitContainerEx.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"f08ea1769ba5e7896dd17200494ff58d403b1c478f10c51378fee4379a86a51f"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (38 corresponding lines): 2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:401-438 | 2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:401-438 \u2014 These two members are one piece of code written twice and then edited apart: 38 consecutive lines correspond almost exactly, broken only by small local edits. Most of that correspondence is NOT reported as duplicated blocks below \u2014 the edits cut it into fragments and only the largest of them clear the block floor, so the rows below understate it. The repair is at the members\u0027 grain \u2014 factor the shared implementation into one the two call with their differences as parameters or as an injected step, or, where the difference is systematic (an extra return value, one transport against another), generate one from the other. Left alone, the next edit has to be made twice and the two will drift further apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":401}}}],"partialFingerprints":{"codehealthFindingId/v1":"468d43b86f3739369fa4313a572d97b499146bb2530da2dfa6a732cd6b4da5aa"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (38 corresponding lines): 2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:401-438 | 2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:401-438 \u2014 These two members are one piece of code written twice and then edited apart: 38 consecutive lines correspond almost exactly, broken only by small local edits. Most of that correspondence is NOT reported as duplicated blocks below \u2014 the edits cut it into fragments and only the largest of them clear the block floor, so the rows below understate it. The repair is at the members\u0027 grain \u2014 factor the shared implementation into one the two call with their differences as parameters or as an injected step, or, where the difference is systematic (an extra return value, one transport against another), generate one from the other. Left alone, the next edit has to be made twice and the two will drift further apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":401}}}],"partialFingerprints":{"codehealthFindingId/v1":"59d8aed704d2814396a53cf41f628bd4e78bef7a678de4d309c64465c282924c"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (57 members, 50\u002B identical tokens): 2015/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb:15-34 | 2015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/API/clsUsage.vb:15-34 | 2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/API/clsUsage.vb:15-34 | 2015/Case.Directionality/Case.Directionality/API/clsUsage.vb:15-34 | 2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/API/clsUsage.vb:15-34 | 2015/Case.Export.Families/Case.Export.Families/API/clsUsage.vb:15-34 | 2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/API/clsUsage.vb:15-34 | 2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/API/clsUsage.vb:15-34 | 2015/Case.ImageToDraftingView/Case.ImageToDraftingView/API/clsUsage.vb:15-34 | 2015/Case.LightingLayout/Case.LightingLayout/API/clsUsage.vb:15-34 | 2015/Case.LineChanger/Case.LineChanger/API/clsUsage.vb:15-34 | 2015/Case.ModeledRoomTags/Case.ModeledRoomTags/API/clsUsage.vb:15-34 | 2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/API/clsUsage.vb:15-34 | 2015/Case.RevClouds/Case.RevClouds/API/clsUsage.vb:15-34 | 2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/API/clsUsage.vb:15-34 | 2015/Case.RoomSync/Case.RoomSync/API/clsUsage.vb:15-34 | 2015/Case.SharedParameters/Case.SharedParameters/API/clsUsage.vb:15-34 | 2015/Case.ViewTemplates/Case.ViewTemplates/API/clsUsage.vb:15-34 | 2015/Case.ViewportReporting/Case.ViewportReporting/API/clsUsage.vb:15-34 | 2016/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb:15-34 | 2016/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/API/clsUsage.vb:15-34 | 2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/API/clsUsage.vb:15-34 | 2016/Case.Directionality/Case.Directionality/API/clsUsage.vb:15-34 | 2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/API/clsUsage.vb:15-34 | 2016/Case.Export.Families/Case.Export.Families/API/clsUsage.vb:15-34 | 2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/API/clsUsage.vb:15-34 | 2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/API/clsUsage.vb:15-34 | 2016/Case.ImageToDraftingView/Case.ImageToDraftingView/API/clsUsage.vb:15-34 | 2016/Case.LightingLayout/Case.LightingLayout/API/clsUsage.vb:15-34 | 2016/Case.LineChanger/Case.LineChanger/API/clsUsage.vb:15-34 | 2016/Case.ModeledRoomTags/Case.ModeledRoomTags/API/clsUsage.vb:15-34 | 2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/API/clsUsage.vb:15-34 | 2016/Case.RevClouds/Case.RevClouds/API/clsUsage.vb:15-34 | 2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/API/clsUsage.vb:15-34 | 2016/Case.RoomSync/Case.RoomSync/API/clsUsage.vb:15-34 | 2016/Case.SharedParameters/Case.SharedParameters/API/clsUsage.vb:15-34 | 2016/Case.ViewTemplates/Case.ViewTemplates/API/clsUsage.vb:15-34 | 2016/Case.ViewportReporting/Case.ViewportReporting/API/clsUsage.vb:15-34 | 2017/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb:15-34 | 2017/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/API/clsUsage.vb:15-34 | 2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/API/clsUsage.vb:15-34 | 2017/Case.Directionality/Case.Directionality/API/clsUsage.vb:15-34 | 2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/API/clsUsage.vb:15-34 | 2017/Case.Export.Families/Case.Export.Families/API/clsUsage.vb:15-34 | 2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/API/clsUsage.vb:15-34 | 2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/API/clsUsage.vb:15-34 | 2017/Case.ImageToDraftingView/Case.ImageToDraftingView/API/clsUsage.vb:15-34 | 2017/Case.LightingLayout/Case.LightingLayout/API/clsUsage.vb:15-34 | 2017/Case.LineChanger/Case.LineChanger/API/clsUsage.vb:15-34 | 2017/Case.ModeledRoomTags/Case.ModeledRoomTags/API/clsUsage.vb:15-34 | 2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/API/clsUsage.vb:15-34 | 2017/Case.RevClouds/Case.RevClouds/API/clsUsage.vb:15-34 | 2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/API/clsUsage.vb:15-34 | 2017/Case.RoomSync/Case.RoomSync/API/clsUsage.vb:15-34 | 2017/Case.SharedParameters/Case.SharedParameters/API/clsUsage.vb:15-34 | 2017/Case.ViewTemplates/Case.ViewTemplates/API/clsUsage.vb:15-34 | 2017/Case.ViewportReporting/Case.ViewportReporting/API/clsUsage.vb:15-34 \u2014 These 57 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 57 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 57 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac5d275a673868f5385783fa3dfb4e3f4ebdf845a0b3266ba3ed0a80e35642c8"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (57 members, 50\u002B identical tokens): 2015/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb:62-83 | 2015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/API/clsUsage.vb:62-83 | 2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/API/clsUsage.vb:62-83 | 2015/Case.Directionality/Case.Directionality/API/clsUsage.vb:62-83 | 2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/API/clsUsage.vb:62-83 | 2015/Case.Export.Families/Case.Export.Families/API/clsUsage.vb:62-83 | 2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/API/clsUsage.vb:62-83 | 2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/API/clsUsage.vb:62-83 | 2015/Case.ImageToDraftingView/Case.ImageToDraftingView/API/clsUsage.vb:62-83 | 2015/Case.LightingLayout/Case.LightingLayout/API/clsUsage.vb:62-83 | 2015/Case.LineChanger/Case.LineChanger/API/clsUsage.vb:62-83 | 2015/Case.ModeledRoomTags/Case.ModeledRoomTags/API/clsUsage.vb:62-83 | 2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/API/clsUsage.vb:62-83 | 2015/Case.RevClouds/Case.RevClouds/API/clsUsage.vb:62-83 | 2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/API/clsUsage.vb:62-83 | 2015/Case.RoomSync/Case.RoomSync/API/clsUsage.vb:62-83 | 2015/Case.SharedParameters/Case.SharedParameters/API/clsUsage.vb:62-83 | 2015/Case.ViewTemplates/Case.ViewTemplates/API/clsUsage.vb:62-83 | 2015/Case.ViewportReporting/Case.ViewportReporting/API/clsUsage.vb:62-83 | 2016/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb:62-83 | 2016/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/API/clsUsage.vb:62-83 | 2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/API/clsUsage.vb:62-83 | 2016/Case.Directionality/Case.Directionality/API/clsUsage.vb:62-83 | 2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/API/clsUsage.vb:62-83 | 2016/Case.Export.Families/Case.Export.Families/API/clsUsage.vb:62-83 | 2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/API/clsUsage.vb:62-83 | 2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/API/clsUsage.vb:62-83 | 2016/Case.ImageToDraftingView/Case.ImageToDraftingView/API/clsUsage.vb:62-83 | 2016/Case.LightingLayout/Case.LightingLayout/API/clsUsage.vb:62-83 | 2016/Case.LineChanger/Case.LineChanger/API/clsUsage.vb:62-83 | 2016/Case.ModeledRoomTags/Case.ModeledRoomTags/API/clsUsage.vb:62-83 | 2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/API/clsUsage.vb:62-83 | 2016/Case.RevClouds/Case.RevClouds/API/clsUsage.vb:62-83 | 2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/API/clsUsage.vb:62-83 | 2016/Case.RoomSync/Case.RoomSync/API/clsUsage.vb:62-83 | 2016/Case.SharedParameters/Case.SharedParameters/API/clsUsage.vb:62-83 | 2016/Case.ViewTemplates/Case.ViewTemplates/API/clsUsage.vb:62-83 | 2016/Case.ViewportReporting/Case.ViewportReporting/API/clsUsage.vb:62-83 | 2017/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb:62-83 | 2017/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/API/clsUsage.vb:62-83 | 2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/API/clsUsage.vb:62-83 | 2017/Case.Directionality/Case.Directionality/API/clsUsage.vb:62-83 | 2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/API/clsUsage.vb:62-83 | 2017/Case.Export.Families/Case.Export.Families/API/clsUsage.vb:62-83 | 2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/API/clsUsage.vb:62-83 | 2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/API/clsUsage.vb:62-83 | 2017/Case.ImageToDraftingView/Case.ImageToDraftingView/API/clsUsage.vb:62-83 | 2017/Case.LightingLayout/Case.LightingLayout/API/clsUsage.vb:62-83 | 2017/Case.LineChanger/Case.LineChanger/API/clsUsage.vb:62-83 | 2017/Case.ModeledRoomTags/Case.ModeledRoomTags/API/clsUsage.vb:62-83 | 2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/API/clsUsage.vb:62-83 | 2017/Case.RevClouds/Case.RevClouds/API/clsUsage.vb:62-83 | 2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/API/clsUsage.vb:62-83 | 2017/Case.RoomSync/Case.RoomSync/API/clsUsage.vb:62-83 | 2017/Case.SharedParameters/Case.SharedParameters/API/clsUsage.vb:62-83 | 2017/Case.ViewTemplates/Case.ViewTemplates/API/clsUsage.vb:62-83 | 2017/Case.ViewportReporting/Case.ViewportReporting/API/clsUsage.vb:62-83 \u2014 These 57 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 57 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 57 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6480595cea8b63fcb0b3c0afb995e5bcc94cd7648dc877799f0feb253d15d6b"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (57 members, 50\u002B identical tokens): 2015/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb:99-129 | 2015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/API/clsUsage.vb:99-129 | 2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/API/clsUsage.vb:99-129 | 2015/Case.Directionality/Case.Directionality/API/clsUsage.vb:99-129 | 2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/API/clsUsage.vb:99-129 | 2015/Case.Export.Families/Case.Export.Families/API/clsUsage.vb:99-129 | 2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/API/clsUsage.vb:99-129 | 2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/API/clsUsage.vb:99-129 | 2015/Case.ImageToDraftingView/Case.ImageToDraftingView/API/clsUsage.vb:99-129 | 2015/Case.LightingLayout/Case.LightingLayout/API/clsUsage.vb:99-129 | 2015/Case.LineChanger/Case.LineChanger/API/clsUsage.vb:99-129 | 2015/Case.ModeledRoomTags/Case.ModeledRoomTags/API/clsUsage.vb:99-129 | 2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/API/clsUsage.vb:99-129 | 2015/Case.RevClouds/Case.RevClouds/API/clsUsage.vb:99-129 | 2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/API/clsUsage.vb:99-129 | 2015/Case.RoomSync/Case.RoomSync/API/clsUsage.vb:99-129 | 2015/Case.SharedParameters/Case.SharedParameters/API/clsUsage.vb:99-129 | 2015/Case.ViewTemplates/Case.ViewTemplates/API/clsUsage.vb:99-135 | 2015/Case.ViewportReporting/Case.ViewportReporting/API/clsUsage.vb:99-129 | 2016/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb:99-129 | 2016/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/API/clsUsage.vb:99-129 | 2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/API/clsUsage.vb:99-129 | 2016/Case.Directionality/Case.Directionality/API/clsUsage.vb:99-129 | 2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/API/clsUsage.vb:99-129 | 2016/Case.Export.Families/Case.Export.Families/API/clsUsage.vb:99-129 | 2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/API/clsUsage.vb:99-129 | 2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/API/clsUsage.vb:99-129 | 2016/Case.ImageToDraftingView/Case.ImageToDraftingView/API/clsUsage.vb:99-129 | 2016/Case.LightingLayout/Case.LightingLayout/API/clsUsage.vb:99-129 | 2016/Case.LineChanger/Case.LineChanger/API/clsUsage.vb:99-129 | 2016/Case.ModeledRoomTags/Case.ModeledRoomTags/API/clsUsage.vb:99-129 | 2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/API/clsUsage.vb:99-129 | 2016/Case.RevClouds/Case.RevClouds/API/clsUsage.vb:99-129 | 2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/API/clsUsage.vb:99-129 | 2016/Case.RoomSync/Case.RoomSync/API/clsUsage.vb:99-129 | 2016/Case.SharedParameters/Case.SharedParameters/API/clsUsage.vb:99-129 | 2016/Case.ViewTemplates/Case.ViewTemplates/API/clsUsage.vb:99-135 | 2016/Case.ViewportReporting/Case.ViewportReporting/API/clsUsage.vb:99-129 | 2017/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb:99-129 | 2017/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/API/clsUsage.vb:99-129 | 2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/API/clsUsage.vb:99-129 | 2017/Case.Directionality/Case.Directionality/API/clsUsage.vb:99-129 | 2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/API/clsUsage.vb:99-129 | 2017/Case.Export.Families/Case.Export.Families/API/clsUsage.vb:99-129 | 2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/API/clsUsage.vb:99-129 | 2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/API/clsUsage.vb:99-129 | 2017/Case.ImageToDraftingView/Case.ImageToDraftingView/API/clsUsage.vb:99-129 | 2017/Case.LightingLayout/Case.LightingLayout/API/clsUsage.vb:99-129 | 2017/Case.LineChanger/Case.LineChanger/API/clsUsage.vb:99-129 | 2017/Case.ModeledRoomTags/Case.ModeledRoomTags/API/clsUsage.vb:99-129 | 2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/API/clsUsage.vb:99-129 | 2017/Case.RevClouds/Case.RevClouds/API/clsUsage.vb:99-129 | 2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/API/clsUsage.vb:99-129 | 2017/Case.RoomSync/Case.RoomSync/API/clsUsage.vb:99-129 | 2017/Case.SharedParameters/Case.SharedParameters/API/clsUsage.vb:99-129 | 2017/Case.ViewTemplates/Case.ViewTemplates/API/clsUsage.vb:99-135 | 2017/Case.ViewportReporting/Case.ViewportReporting/API/clsUsage.vb:99-129 \u2014 These 57 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 57 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 57 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e34996d06a9cadb94089c3376d736aef57ce1c025bbd1cd0df7bc623afdc00a"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (44 members, 50\u002B identical tokens): 2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSortableBindingList.vb:57-73 | 2015/Case.LightingLayout/Case.LightingLayout/Data/clsSortableBindingList.vb:58-73 | 2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSortableBindingList.vb:58-73 | 2015/Case.RevClouds/Case.RevClouds/Data/clsSortableBindingList.vb:58-73 | 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSortableBindingList.vb:56-71 | 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSortableBindingList.vb:56-71 | 2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSortableBindingList.vb:56-71 | 2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSortableBindingList.vb:56-71 | 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSortableBindingList.vb:56-71 | 2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSortableBindingList.vb:56-71 | 2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSortableBindingList.vb:56-71 | 2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSortableBindingList.vb:57-73 | 2016/Case.LightingLayout/Case.LightingLayout/Data/clsSortableBindingList.vb:58-73 | 2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSortableBindingList.vb:58-73 | 2016/Case.RevClouds/Case.RevClouds/Data/clsSortableBindingList.vb:58-73 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSortableBindingList.vb:56-71 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSortableBindingList.vb:56-71 | 2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSortableBindingList.vb:56-71 | 2016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSortableBindingList.vb:56-71 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSortableBindingList.vb:56-71 | 2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSortableBindingList.vb:56-71 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSortableBindingList.vb:56-71 | 2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSortableBindingList.vb:57-73 | 2017/Case.LightingLayout/Case.LightingLayout/Data/clsSortableBindingList.vb:58-73 | 2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSortableBindingList.vb:58-73 | 2017/Case.RevClouds/Case.RevClouds/Data/clsSortableBindingList.vb:58-73 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSortableBindingList.vb:56-71 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSortableBindingList.vb:56-71 | 2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSortableBindingList.vb:56-71 | 2017/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSortableBindingList.vb:56-71 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSortableBindingList.vb:56-71 | 2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSortableBindingList.vb:56-71 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSortableBindingList.vb:56-71 | 2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSortableBindingList.vb:57-73 | 2018/Case.LightingLayout/Case.LightingLayout/Data/clsSortableBindingList.vb:58-73 | 2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSortableBindingList.vb:58-73 | 2018/Case.RevClouds/Case.RevClouds/Data/clsSortableBindingList.vb:58-73 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSortableBindingList.vb:56-71 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSortableBindingList.vb:56-71 | 2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSortableBindingList.vb:56-71 | 2018/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSortableBindingList.vb:56-71 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSortableBindingList.vb:56-71 | 2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSortableBindingList.vb:56-71 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSortableBindingList.vb:56-71 \u2014 These 44 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 44 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 44 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSortableBindingList.vb"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"1af217deba73cf9d2bbbb85630127368adfa426c9b3c5c95e1dccc3ca44e954b"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (25 members, 50\u002B identical tokens): 2015/Case.ApplySysOrient/API/clsAPI.cs:21-47 | 2015/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs:21-47 | 2015/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs:21-47 | 2015/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs:21-47 | 2015/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs:25-48 | 2015/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs:21-47 | 2015/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs:21-47 | 2015/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs:21-47 | 2016/Case.ApplySysOrient/API/clsAPI.cs:21-47 | 2016/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs:21-47 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs:21-47 | 2016/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs:21-47 | 2016/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs:25-48 | 2016/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs:21-47 | 2016/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs:21-47 | 2016/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs:21-47 | 2017/Case.ApplySysOrient/API/clsAPI.cs:21-47 | 2017/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs:21-47 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs:21-47 | 2017/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs:21-47 | 2017/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs:25-48 | 2017/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs:21-47 | 2017/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs:21-47 | 2017/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs:21-47 | 2018/Case.ApplySysOrient/API/clsAPI.cs:21-47 \u2014 These 25 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 25 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 25 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d736d4dab4f37bdda6c566da24231bb6b960af45978cc38627309410bf018f9"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (25 members, 50\u002B identical tokens): 2015/Case.ApplySysOrient/API/clsAPI.cs:75-98 | 2015/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs:75-98 | 2015/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs:75-98 | 2015/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs:75-98 | 2015/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs:76-98 | 2015/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs:75-98 | 2015/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs:75-98 | 2015/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs:75-98 | 2016/Case.ApplySysOrient/API/clsAPI.cs:75-98 | 2016/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs:75-98 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs:75-98 | 2016/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs:75-98 | 2016/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs:76-98 | 2016/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs:75-98 | 2016/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs:75-98 | 2016/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs:75-98 | 2017/Case.ApplySysOrient/API/clsAPI.cs:75-98 | 2017/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs:75-98 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs:75-98 | 2017/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs:75-98 | 2017/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs:76-98 | 2017/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs:75-98 | 2017/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs:75-98 | 2017/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs:75-98 | 2018/Case.ApplySysOrient/API/clsAPI.cs:75-98 \u2014 These 25 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 25 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 25 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5c8d280447427012941ebc97555e5a5621e9cfcd6adc117a527751efdf06395"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (20 members, 50\u002B identical tokens): 2015/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb:241-267 | 2015/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb:241-267 | 2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb:186-218 | 2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:64-90 | 2015/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb:144-170 | 2016/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb:241-267 | 2016/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb:241-267 | 2016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb:186-218 | 2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:64-90 | 2016/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb:144-170 | 2017/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb:241-267 | 2017/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb:241-267 | 2017/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb:186-218 | 2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:64-90 | 2017/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb:144-170 | 2018/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb:241-267 | 2018/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb:241-267 | 2018/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb:186-218 | 2018/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:64-90 | 2018/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb:144-170 \u2014 These 20 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 20 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 20 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"040f2a99dfb86a2547147154fba69e4cb8b5a09867df268c8c452dfd40a495f1"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (16 members, 50\u002B identical tokens): 2015/Case.ApplySysOrient/Data/clsSettings.cs:121-179 | 2015/Case.ApplySysOrient/Data/clsSettings.cs:185-242 | 2015/Case.ApplySysOrient/Data/clsSettings.cs:248-303 | 2015/Case.ApplySysOrient/Data/clsSettings.cs:309-370 | 2016/Case.ApplySysOrient/Data/clsSettings.cs:121-179 | 2016/Case.ApplySysOrient/Data/clsSettings.cs:185-242 | 2016/Case.ApplySysOrient/Data/clsSettings.cs:248-303 | 2016/Case.ApplySysOrient/Data/clsSettings.cs:309-370 | 2017/Case.ApplySysOrient/Data/clsSettings.cs:121-179 | 2017/Case.ApplySysOrient/Data/clsSettings.cs:185-242 | 2017/Case.ApplySysOrient/Data/clsSettings.cs:248-303 | 2017/Case.ApplySysOrient/Data/clsSettings.cs:309-370 | 2018/Case.ApplySysOrient/Data/clsSettings.cs:121-179 | 2018/Case.ApplySysOrient/Data/clsSettings.cs:185-242 | 2018/Case.ApplySysOrient/Data/clsSettings.cs:248-303 | 2018/Case.ApplySysOrient/Data/clsSettings.cs:309-370 \u2014 These 16 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 16 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 16 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"54212013e0e4359e5abe3b2fb54abaa0cd1357261845361bbc6db2a29fdf9b89"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (12 members, 50\u002B identical tokens): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:254-286 | 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:323-355 | 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:407-439 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:254-286 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:323-355 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:407-439 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:254-286 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:323-355 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:407-439 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:254-286 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:323-355 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:407-439 \u2014 These 12 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 12 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 12 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"c67084c17327ea3fff55f139e59452316ee0e3e759e36ec6c04a270edccebea6"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (12 members, 50\u002B identical tokens): 2015/Case.Directionality/Case.Directionality/Data/clsPara.vb:161-177 | 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb:120-136 | 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb:147-163 | 2016/Case.Directionality/Case.Directionality/Data/clsPara.vb:161-177 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb:120-136 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb:147-163 | 2017/Case.Directionality/Case.Directionality/Data/clsPara.vb:161-177 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb:120-136 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb:147-163 | 2018/Case.Directionality/Case.Directionality/Data/clsPara.vb:161-177 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb:120-136 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb:147-163 \u2014 These 12 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 12 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 12 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/Data/clsPara.vb"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"08e526e15428fc39aaacea5ed33545b04adb2afa2c2e90488bef0a7c82b683e8"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (12 members, 50\u002B identical tokens): 2015/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs:94-109 | 2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnData.cs:51-64 | 2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs:99-112 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs:94-109 | 2016/Case.ObjectStyles/Case.ObjectStyles/Data/mnData.cs:51-64 | 2016/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs:99-112 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs:94-109 | 2017/Case.ObjectStyles/Case.ObjectStyles/Data/mnData.cs:51-64 | 2017/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs:99-112 | 2018/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs:94-109 | 2018/Case.ObjectStyles/Case.ObjectStyles/Data/mnData.cs:51-64 | 2018/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs:99-112 \u2014 These 12 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 12 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 12 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"16b1b5b4a9980c54bf30301a642a6982dd21e21900a223ba63bb79257141da73"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (8 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:169-202 | 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:136-169 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:169-202 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:136-169 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:169-202 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:136-169 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:169-202 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:136-169 \u2014 These 8 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 8 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 8 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddc241b857e3d2d62102f7df2660aff818279da5481b781d5979f1348db72328"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (8 members, 50\u002B identical tokens): 2015/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb:132-186 | 2015/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb:220-280 | 2016/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb:132-186 | 2016/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb:220-280 | 2017/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb:132-186 | 2017/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb:220-280 | 2018/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb:132-186 | 2018/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb:220-280 \u2014 These 8 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 8 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 8 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e19e97acb4639e9fe1371cb4258f2a03ea8e3e7a19461d1bfe8a87f656feac8"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (8 members, 50\u002B identical tokens): 2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsView.vb:93-109 | 2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsView.vb:81-97 | 2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsView.vb:93-109 | 2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsView.vb:81-97 | 2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsView.vb:93-109 | 2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsView.vb:81-97 | 2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsView.vb:93-109 | 2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsView.vb:81-97 \u2014 These 8 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 8 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 8 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"affb642f22e2788c89e4bae5d1965b38ba1feda5e18f726611aafcec4029237d"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (8 members, 50\u002B identical tokens): 2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb:69-168 | 2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb:69-177 | 2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb:69-168 | 2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb:69-177 | 2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb:69-168 | 2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb:69-177 | 2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb:69-168 | 2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb:69-177 \u2014 These 8 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 8 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 8 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6b1b5a13466d53823ee60a718edf6df87f45e00ce44b1584741e65dc897978c"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (8 members, 50\u002B identical tokens): 2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:287-323 | 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:286-407 | 2016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:287-323 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:286-407 | 2017/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:287-323 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:286-407 | 2018/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:287-323 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:286-407 \u2014 These 8 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 8 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 8 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ea8ff9155db5fff4dc3403da3c42038742767d029c1f46664e13ef0e42cc816"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (8 members, 50\u002B identical tokens): 2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:39-69 | 2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:184-226 | 2016/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:39-69 | 2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:184-226 | 2017/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:39-69 | 2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:184-226 | 2018/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:39-69 | 2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:184-226 \u2014 These 8 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 8 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 8 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"7788e0005acba2022c41cb5a54edf3137670aecba2685965f762210cda01b3ef"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (8 members, 50\u002B identical tokens): 2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:396-425 | 2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:453-482 | 2016/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:396-425 | 2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:453-482 | 2017/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:396-425 | 2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:453-482 | 2018/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:391-420 | 2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:453-482 \u2014 These 8 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 8 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 8 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":396}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f6385f3376618ed8b939bd498ddab1d187afc37761753bd94242df2350cb819"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (8 members, 50\u002B identical tokens): 2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb:25-64 | 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFamily.vb:38-49 | 2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb:25-64 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFamily.vb:38-49 | 2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb:25-64 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFamily.vb:38-49 | 2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb:25-64 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFamily.vb:38-49 \u2014 These 8 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 8 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 8 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"71998cb9c914b0deeb1f1b8bb4b4ed65ade6fac7311be7c10cd191d75616e23c"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (8 members, 50\u002B identical tokens): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:440-496 | 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:509-574 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:440-496 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:509-574 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:440-496 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:509-574 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:440-496 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:509-574 \u2014 These 8 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 8 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 8 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":440}}}],"partialFingerprints":{"codehealthFindingId/v1":"71e750ce82a11d7fc088017b5336cf726a41ff28a3ab861c20089a3d6821cec5"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (8 members, 50\u002B identical tokens): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:57-94 | 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb:36-59 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:57-94 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb:36-59 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:57-94 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb:36-59 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:57-94 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb:36-59 \u2014 These 8 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 8 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 8 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"9429537cf762d72654ce949866d886f5ea122953036143ed86a5a128792f63c3"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (8 members, 50\u002B identical tokens): 2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:591-633 | 2015/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb:199-241 | 2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:591-633 | 2016/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb:199-241 | 2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:591-633 | 2017/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb:199-241 | 2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:591-633 | 2018/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb:199-241 \u2014 These 8 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 8 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 8 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":591}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ef6952ce165c710e3d567d2bf208396d5bf5940757a39f5ab5b63b03339f2f2"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (8 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:118-200 | 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:213-298 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:118-200 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:213-298 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:118-200 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:213-298 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:118-200 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:213-298 \u2014 These 8 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 8 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 8 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc1c9756a15447cec4824b292c30902267490d14fc1140f8b1240d9509540fc1"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (8 members, 50\u002B identical tokens): 2015/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs:126-151 | 2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs:132-157 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs:126-151 | 2016/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs:132-157 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs:126-151 | 2017/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs:132-157 | 2018/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs:126-151 | 2018/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs:132-157 \u2014 These 8 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 8 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 8 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd054b85ed6aa73ce42594d392732ae3cee7131b4d9b4a9e6ea1a01d6a241a53"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (8 members, 50\u002B identical tokens): 2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:245-303 | 2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:360-421 | 2016/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:245-303 | 2016/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:360-421 | 2017/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:245-303 | 2017/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:360-421 | 2018/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:245-303 | 2018/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:360-421 \u2014 These 8 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 8 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 8 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cbdb022f7d3e1727b5ce407e737eb88ad8354a966bba9985a72a363e749207f"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (7 members, 50\u002B identical tokens): 2015/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb:24-56 | 2015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/Entry/CmdMain.vb:25-57 | 2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Entry/CmdMain.vb:24-56 | 2015/Case.Directionality/Case.Directionality/Entry/CmdMain.vb:24-56 | 2015/Case.ImageToDraftingView/Case.ImageToDraftingView/Entry/CmdMain.vb:23-55 | 2015/Case.LineChanger/Case.LineChanger/Entry/CmdMain.vb:17-49 | 2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Entry/CmdMain.vb:25-57 \u2014 These 7 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 7 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 7 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5c94633127ad55ead0f32169d75f0410c6d94ec5823d984fe42cd599f9d6af8"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (7 members, 50\u002B identical tokens): 2016/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb:24-56 | 2016/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/Entry/CmdMain.vb:25-57 | 2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Entry/CmdMain.vb:24-56 | 2016/Case.Directionality/Case.Directionality/Entry/CmdMain.vb:24-56 | 2016/Case.ImageToDraftingView/Case.ImageToDraftingView/Entry/CmdMain.vb:23-55 | 2016/Case.LineChanger/Case.LineChanger/Entry/CmdMain.vb:17-49 | 2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Entry/CmdMain.vb:25-57 \u2014 These 7 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 7 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 7 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf3eeb36335e143169b608f2d547bd7dc7e5258eae19fb92c3c1fe5e296b49b9"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (7 members, 50\u002B identical tokens): 2017/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb:24-56 | 2017/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/Entry/CmdMain.vb:25-57 | 2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Entry/CmdMain.vb:24-56 | 2017/Case.Directionality/Case.Directionality/Entry/CmdMain.vb:24-56 | 2017/Case.ImageToDraftingView/Case.ImageToDraftingView/Entry/CmdMain.vb:23-55 | 2017/Case.LineChanger/Case.LineChanger/Entry/CmdMain.vb:17-49 | 2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Entry/CmdMain.vb:25-57 \u2014 These 7 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 7 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 7 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a7a34a67266498a502d5fd440f07f502cc2c9793072f348264856b1da6bb6b4"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (7 members, 50\u002B identical tokens): 2018/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb:24-56 | 2018/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/Entry/CmdMain.vb:25-57 | 2018/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Entry/CmdMain.vb:24-56 | 2018/Case.Directionality/Case.Directionality/Entry/CmdMain.vb:24-56 | 2018/Case.ImageToDraftingView/Case.ImageToDraftingView/Entry/CmdMain.vb:23-55 | 2018/Case.LineChanger/Case.LineChanger/Entry/CmdMain.vb:17-49 | 2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Entry/CmdMain.vb:25-57 \u2014 These 7 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 7 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 7 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f0b6e083ae9f8929de35c3c7eecd2e4864acda55bd053fe9c5ff711333f50a7"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb:63-79 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb:63-79 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb:63-79 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb:63-79 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb2f2b4b50999318ea652cb202cf6a775693d03030e540786263af79fe92c169"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb:90-122 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb:90-122 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb:90-122 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb:90-122 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"fea9ae6ea19ada6d507c48346f6b9a9f25094533280307fc06591691acdbe4d6"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb:90-141 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb:90-141 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb:90-141 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb:90-141 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"24ce4c149cd2ee060a42023d70dbbfd51266dec68085c91cbdd152f17c9b62e3"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb:152-170 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb:152-170 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb:152-170 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb:152-170 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"fca94749e5cb7ddd1342c511751d88f4fa784f277676db542006216e6bd98f79"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:32-47 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:32-47 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:32-47 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:32-47 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5d4a7c9c3b8fc952676461c047fd06c0e650897395da73dcbc7ff5aa824a0d1"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:57-184 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:57-184 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:57-184 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:57-184 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"e621ccf4a9934ec2a34eea9a2645710320d2603855efb8560fd8a0ed5886a2aa"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:195-246 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:195-246 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:195-246 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:195-246 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ca85b5e1a29d91057d83da4e35a536330a61948aed76136f2e1194875bd0f52"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:266-283 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:266-283 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:266-283 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:266-283 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f8886bfb95a734bd4b3710bdeaefffddc02765009275f71f2d4d3762db0e9ea"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:300-312 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:300-312 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:300-312 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:300-312 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"a81d195cfdbcb5441764e291e9ad085eba6677df7737bb856756ae3d76ab4766"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:382-417 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:382-417 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:382-417 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:382-417 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":382}}}],"partialFingerprints":{"codehealthFindingId/v1":"f913cf5b00acd9721d2d0a251b1b0d41f5aabde6049625138d700c22d902b7ec"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:613-632 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:613-632 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:613-632 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:613-632 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":613}}}],"partialFingerprints":{"codehealthFindingId/v1":"40785b3fef7e9b1039722dae64299cf6253342f0be12249c061cb1f0dac16c1b"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:41-67 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:41-67 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:41-67 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:41-67 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"248d4a7d8d33d88e755f7b9080f83bb06b3f5cf63efd17e6f74773d7cc675f59"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:77-93 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:77-93 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:77-93 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:77-93 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"426f3f9363b029e07b5bf0f59d45a395970ae1e88cfd4da620503d736dc19627"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:103-119 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:103-119 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:103-119 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:103-119 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b1f5e2e19c6fdfe771c7ea3230c5a254f9e2eceeb2067eafe1424fe9f1e8f19"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:189-230 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:189-230 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:189-230 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:189-230 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"cae50b7e88bd318d3eb4fb95517b3b2eec65d1e9330807d4e307c31e48b25754"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb:343-373 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb:343-373 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb:343-373 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb:343-373 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"a695814208fc89ebd6e3140da626caf434ddc5c5b8ebf531469ba0be68713d66"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb:62-136 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb:62-136 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb:62-136 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb:62-136 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"7276b9a68605dd6297648e9762f0e66b04450792a27a32645fbd30c82d884e87"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb:146-168 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb:146-168 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb:146-168 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb:146-168 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"82410c1bad33f8faef1603bff8798d95de78c54544d84487cf9bd364ec080265"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:124-249 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:124-249 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:124-249 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:124-249 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"cda8ae96b01d01c29fd1927782554319a87bb859c8d53b6727f4e635982772be"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:265-314 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:265-314 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:265-314 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:265-314 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"eaf03dd45fa8433e5217c9fb61a2fc940d00bde0f8d759b7e1b52e6e00c38869"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:599-632 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:599-632 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:599-632 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:599-632 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":599}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0f47683095b7615e9607189158d11b57bd0e571aee5ca6a28d2b0aca2e7ae32"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:644-691 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:644-691 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:644-691 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:644-691 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":644}}}],"partialFingerprints":{"codehealthFindingId/v1":"72010cb73bccd8bd41c4805b96d36a4175af70e9abc0ef5d1949dd1bc3a10ba8"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:711-951 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:711-951 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:711-951 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:711-951 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":711}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae448aedb3d384ccad3c4647645390968bc1e67fc26efdc76314658218aa4337"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:967-1008 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:967-1008 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:967-1008 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:967-1008 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":967}}}],"partialFingerprints":{"codehealthFindingId/v1":"d866d187e8d7747457340b84ab4498153d68a2a5c8c9305e40cc1689dedc235d"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb:161-199 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb:161-199 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb:161-199 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb:161-199 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"3494a8be91ccc245f1b4425346e80735167df7ae3c510af5792e591050bf16bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb:93-143 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb:93-143 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb:93-143 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb:93-143 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"a159693a09abe6e752b44903b2a116fb7e61ffc91ae302757aef79a1286f32e5"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb:154-177 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb:154-177 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb:154-177 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb:154-177 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba1076f71d29fe09c7cbf5cff37d5372f6de7d5ef32dc0ffa2748635debca434"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb:207-245 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb:207-245 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb:207-245 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb:207-245 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"5507705bca4f121f06a21f28e9579a6934dc394e0a4d856dd12fcce93aebe740"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:327-411 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:327-411 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:327-411 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:327-411 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b260059024211c32cc1f8829c00d285c372d946c5918d30a38cb881c5271e08"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:422-463 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:422-463 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:422-463 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:422-463 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":422}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf4b62a6aff6c6caef752e800af5867c77b215ce149f4c5d03b86bdf31932ace"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:509-527 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:509-527 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:509-527 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:509-527 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":509}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5ec222d98b6b39bf280cdd1c1b6f691da397949df697446e1a99bbc0e42a2b3"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:537-555 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:537-555 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:537-555 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:537-555 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":537}}}],"partialFingerprints":{"codehealthFindingId/v1":"b69d20f156958a77b8060de9f299bee9a70f14f99b1aacee6c7016efbfc283c1"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:566-581 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:566-581 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:566-581 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:566-581 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":566}}}],"partialFingerprints":{"codehealthFindingId/v1":"d67060a8b43481a9368fbfd88137fb6da0da04103e2b524a83a82acfeee5808a"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:39-116 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:39-116 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:39-116 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:39-116 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b17b70306490516c8912c786e2cb851cb562872e868c983289447a6ae9bcf04"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:285-317 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:285-317 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:285-317 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:285-317 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"b560e14bbe4bcd2e2afac2a49ab67bc501112243016aa21b90178258d0814cb0"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:412-449 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:412-449 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:412-449 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:412-449 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":412}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6133f345a323b622a32fe14c0c29503efb8c884bea4edb2dcae0916a59f815e"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:463-497 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:463-497 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:463-497 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:463-497 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":463}}}],"partialFingerprints":{"codehealthFindingId/v1":"e139a3f5ae5296416396d9497a3ecc57ec1cb6c95ed331080bde2cdec174d238"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:509-550 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:509-550 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:509-550 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:509-550 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":509}}}],"partialFingerprints":{"codehealthFindingId/v1":"0678c4d6204a34c755a3389ea6615f70de2df8b4bfdf134192a6d7710d9e91e7"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:651-703 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:651-703 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:651-703 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:651-703 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":651}}}],"partialFingerprints":{"codehealthFindingId/v1":"3485bcac65d2c2175307ac4d30f58b27a7cd5b8408f2121a983f49f45280d3fd"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb:197-215 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb:197-215 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb:197-215 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb:197-215 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"53a80cc726169a73a0f26995fc6d71a1610c5ca52da305b6d331c91e4487d263"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb:263-291 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb:263-291 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb:263-291 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb:263-291 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":263}}}],"partialFingerprints":{"codehealthFindingId/v1":"38bc4109f60d98be3f7e03047323fe3c85b60a339ee77740c27851e88520ee6e"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:41-100 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:41-100 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:41-100 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:41-100 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"2aacd209695bfdbc93ae784fad610ccb70931cf69c55289a354216aef33e8b39"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:735-760 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:735-760 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:735-760 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:735-760 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":735}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4150ad16ee87393befbc603b07be3f382d5721021497a50784bf2a3fdda947f"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:774-822 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:774-822 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:774-822 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:774-822 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":774}}}],"partialFingerprints":{"codehealthFindingId/v1":"d47bd0ea276f7ef756ef2e0dbb63b4484606c24b7d8e926c7c78bd1e898c80ea"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb:130-202 | 2016/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb:130-202 | 2017/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb:130-202 | 2018/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb:130-202 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"9be163f1ad2fa0e3a199e5e409c63f7cbea2278b463d1421cd0cc1798fcfd6e9"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb:14-32 | 2016/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb:14-32 | 2017/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb:14-32 | 2018/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb:14-32 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a3eeb06a2b1e58479b1d733cd7721c0a1ffc88ec67e703df5596ce7a0b8e4e7"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb:101-121 | 2016/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb:101-121 | 2017/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb:101-121 | 2018/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb:101-121 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"d957ca817d0f6285b227c6a801151f7d4345e1133f7555fb02ed7866ea596f26"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb:188-245 | 2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb:188-245 | 2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb:188-245 | 2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb:188-245 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"ceca4c8491b126a0be54c14854fe14cfeccacf91ef2f95d332fb24d5c9c545a1"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONGet.vb:17-37 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONGet.vb:17-37 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONGet.vb:17-37 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONGet.vb:17-37 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONGet.vb"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"a251b92629efb5c2f2939ffa0bb61e3cf25ae5d139fc6e4ef1fd3a4348ac8473"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:205-243 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:205-243 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:205-243 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:205-243 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c73147175a562cede2126340bd0d2ff05f84711d585429312d1d7fc048fe7cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:249-303 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:249-303 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:249-303 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:249-303 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f94c255879a51481ae863666f65938601fb4510e804643c307247d693b87f8a"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:315-395 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:315-395 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:315-395 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:315-395 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa05d0f59d7ff466ab38281f1b83f701e18b9ffd2c739915a96981aa33f0d3a3"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:50-231 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:50-231 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:50-231 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:50-231 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"b437b192a0a3fbbff04500559fb69c271a1571d8473661309ffead67f433c097"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:243-293 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:243-293 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:243-293 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:243-293 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bd586170229cc52b8e79f1cbdbe72f1fba7a12af987390e4c023a14fc9e8641"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:304-356 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:304-356 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:304-356 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:304-356 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb"},"region":{"startLine":304}}}],"partialFingerprints":{"codehealthFindingId/v1":"f523b25550d3660c562ff2609002b4600785793f32b373c98455e50e3110db08"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:72-142 | 2016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:72-142 | 2017/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:72-142 | 2018/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:72-142 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cb8411857c16c9927764188e1c38dbef0de38f77c3c4a9d2fa5b3756379c5e5"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:339-381 | 2016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:339-381 | 2017/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:339-381 | 2018/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:339-381 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"50eb9fa403ea5b98e6f511d62122b08bd6aacfc962032ebee39a89afc81ff571"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsFamilyType.vb:150-227 | 2016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsFamilyType.vb:150-227 | 2017/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsFamilyType.vb:150-227 | 2018/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsFamilyType.vb:150-227 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsFamilyType.vb"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d4aa3035cab56a02c4511c9098968964a9f80f7c7e1e1f045d0db7448f351b0"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:93-112 | 2016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:93-112 | 2017/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:93-112 | 2018/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:93-112 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"bab7fd7a5987b0d057e7363dd97d0005557607cceaaff81fba99e75e011f28c8"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:211-221 | 2016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:211-221 | 2017/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:211-221 | 2018/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:211-221 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a5dcdf04ec0c2d2530dec5fffa177551822a6db8fa69cc90ff90d104435ed3a"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:231-241 | 2016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:231-241 | 2017/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:231-241 | 2018/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:231-241 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"29456a67083f519bb79e667726173cc74fe7aa416d19acdd5834a6bc27d18fff"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:456-508 | 2016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:456-508 | 2017/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:456-508 | 2018/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:456-508 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":456}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7e823cd3a6e51122681b3aa1fd54b275d6f34772c2f2a837f3a6db4261551bf"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:179-190 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:179-190 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:179-190 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:179-190 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"eab1521bae299850dc4580bd0331eb302bf26e5ab5fd30300eba4509cedeceed"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:228-275 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:228-275 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:228-275 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:228-275 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"293989cfb2d38cc39a8fc3126a965246458cf9b84260676570dfa408ccba0d65"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:286-316 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:286-316 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:286-316 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:286-316 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ce6c7e2535900d87da897c93e5dee9d71595b50cf1ab9768d6bdd6abf3bc0b2"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:327-356 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:327-356 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:327-356 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:327-356 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9b4af93c214ebda2b2f689db946015a97aba27fd43557084cea7c169930a41c"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:538-560 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:538-560 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:538-560 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:538-560 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":538}}}],"partialFingerprints":{"codehealthFindingId/v1":"c176378ae9527f344c023b3e1ee2e00f02e1a9d84ea2d62da379c829586e2a5d"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb:111-143 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb:111-143 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb:111-143 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb:111-143 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"617c56b986ea194b2b959b422e711fa896948047dba9c3843dca94f9cddb7cbd"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:423-445 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:423-445 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:423-445 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:423-445 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":423}}}],"partialFingerprints":{"codehealthFindingId/v1":"936f3efe77c8ef8035b3dccc81f8f658e2a1e5c0bc89ea355c2a18fe4bb0aad0"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:490-513 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:490-513 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:490-513 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:490-513 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"4458c0414d27b00b12790901eaa23feaea95ded8ccfc7c16c8c7752f3010669b"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:531-554 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:531-554 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:531-554 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:531-554 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":531}}}],"partialFingerprints":{"codehealthFindingId/v1":"8220db66fed67da3dbc3d2b4bcee3504f5c7d6f0f376ac2288aea2874f9eb853"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:569-623 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:569-623 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:569-623 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:569-623 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":569}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6107b96e79469f45ebeeee97b775533e9c88e386ad6b4ceb6931c02a49365f0"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:647-671 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:647-671 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:647-671 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:647-671 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":647}}}],"partialFingerprints":{"codehealthFindingId/v1":"5afcec7af45900ca61d32859310b685bb97e25cb0668a19c15f8230e543bde76"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:36-58 | 2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:36-58 | 2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:36-58 | 2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:36-58 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"c81b424b81996e046fb9c09ad07b6df745fba832da631064f8cb5280d087cef4"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:275-305 | 2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:275-305 | 2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:275-305 | 2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:275-305 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"81122976f02ae0def08ec5fb6d22832dbbbc42c58d722829474bc4893c2a3290"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:116-139 | 2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:116-139 | 2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:116-139 | 2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:116-139 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"aee351d9cf0cfb1c46e2851ad61898906a2a6a7d6813f73e516016b73c12a8b2"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:149-170 | 2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:149-170 | 2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:149-170 | 2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:149-170 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"09b06e5f76389041a9e074623ba2ecbb7434ebc80866a5b2e9dae2429855d4a7"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:182-251 | 2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:182-251 | 2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:182-251 | 2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:182-251 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6192bfafd34beb66f0b250e14bb5cd80ad2bdb2829d589c1f917492a5dcdf62"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:262-294 | 2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:262-294 | 2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:262-294 | 2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:262-294 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"eda43582f0feaba3dc898255edb460af55c1659bcb1b39e615d955607f0372b7"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:41-63 | 2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:41-63 | 2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:41-63 | 2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:41-63 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"934d1dba7003aa371c8047bbadbad33d55996eadfb732ac66691eef059d54d7a"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:75-103 | 2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:75-103 | 2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:75-103 | 2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:75-103 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"5acda20709de0430181711178a656685a401db09d828db8729983b2fa5d92449"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:238-257 | 2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:238-257 | 2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:238-257 | 2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:238-257 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f0963bfaf18b1623cf933f88bd1dc608046f6f38927089fd4532a00b265e682"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:268-318 | 2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:268-318 | 2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:268-318 | 2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:268-318 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"374075330861185d59d767f82ec1b8ecbe079f8712ab53428b188ea67475bece"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:329-388 | 2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:329-388 | 2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:329-388 | 2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:329-388 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"27bf5842e9eb6b023b33d4b9bf48a80e4b8d6e601da330a4809ab10aa4de9e9f"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb:124-180 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb:124-180 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb:124-180 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb:124-180 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cdab2ce5a04e3887e3c04517f1a67c0283a9db5cfa5de1f5876d4dbdb849312"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:258-307 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:258-307 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:258-307 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:258-307 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3c608e6bea32112b847894c1b7ed286bf023132ad289ca7d1bf0a82109b2d99"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:408-427 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:408-427 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:408-427 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:408-427 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"feef8d90142583b392ae039ac5b75f17d23c7588a311b6fd0c9ae57cc85f3e35"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:467-495 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:467-495 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:467-495 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:467-495 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":467}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee5894937ac1c87b015eea25bf92b4a44aa217ea9d2bfc6ae64be9dc270b2015"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:506-547 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:506-547 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:506-547 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:506-547 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":506}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f74fafae60b7de594e48e91dc155a2c08bcf0d9be6f9eb0ef05c9968c9ec6e2"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:279-303 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:279-303 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:279-303 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:279-303 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":279}}}],"partialFingerprints":{"codehealthFindingId/v1":"69f7bfa999e4f65029a2ae338a082e86cfae7a130a50a5b1243cd7c90480c340"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:313-438 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:313-438 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:313-438 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:313-438 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"62472f8be9fcc7dcb21016d9e107f31d3e694c0b59530db3d60d12633e615d8c"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:453-501 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:453-501 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:453-501 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:453-501 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"dddb08923482565d4dad450ec844db78780ca85e93e2f4cdff1e1ab645d2f55a"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb:78-128 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb:78-128 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb:78-128 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb:78-128 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc0def5f5b36e0b592b8c13941d2611df6bb28a71d1d5cb8eefe42f67bd4e6b2"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb:141-187 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb:141-187 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb:141-187 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb:141-187 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"fde09ddb1f7ed8a757f1cea27b6973d27fe86fb46eca006a1d090f741daa586d"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb:81-117 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb:81-117 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb:81-117 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb:81-117 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"b162276e1ad59f6e99a6f1f455e1a020229cb479860e0fc682126dab81e7b82d"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSortableBindingList.vb:60-75 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSortableBindingList.vb:60-75 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSortableBindingList.vb:60-75 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSortableBindingList.vb:60-75 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSortableBindingList.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b3c1405855269930c1f4b683ac1b011ee0bea854c52c858ed47fa9e58e9f9d6"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_AddFamily.vb:35-58 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_AddFamily.vb:35-58 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_AddFamily.vb:35-58 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_AddFamily.vb:35-58 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_AddFamily.vb"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fa9c511cf0e0a533a7df5cd366f6c0998a811826e45bb5ed4a00ce0f486f64c"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:32-53 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:32-53 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:32-53 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:32-53 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"43bf252cdd2901bfeae9a9aa0406f78bae20ba6857460fa201e71e3510ffc26f"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:64-139 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:64-139 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:64-139 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:64-139 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"026b388ff385391e5c5c629269ceee6bb28f114289a4ef63ffe23cdacf2f49f5"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:176-236 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:176-236 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:176-236 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:176-236 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f5fc187672a3c9c71e2d3334d111912582f39b594c2d5e6c33a4b2b6eb66d67"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:380-423 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:380-423 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:380-423 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:380-423 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":380}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd7444f1a19b334247fa225f690d4545f0baeb393fcad1ab166570c48058af46"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:591-629 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:591-629 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:591-629 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:591-629 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":591}}}],"partialFingerprints":{"codehealthFindingId/v1":"7df516d65a8407fbee5b009fc54de1c4cf5a6c925e04702524709555fd6da451"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:642-693 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:642-693 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:642-693 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:642-693 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":642}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e0e436e6facd0af426b02093629d092d020bcf02e61244743d6cde5d59e546d"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:33-43 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:33-43 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:33-43 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:33-43 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"57ea1e7e610dce2244830f44e62465fe9e70bf4d542c7c3c62e8d002e8e2938c"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:105-184 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:105-184 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:105-184 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:105-184 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"05e60540ad82c10fe94444f5c0d14b2e73497d6bf976abf1c2ad1a6904b55852"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:291-318 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:291-318 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:291-318 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:291-318 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"d303589c70b7c3c991cab03169cb2e26d407484a8c78d71159f30fb7626d6019"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:359-381 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:359-381 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:359-381 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:359-381 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":359}}}],"partialFingerprints":{"codehealthFindingId/v1":"8953aa63a3fb5d5693f0939a23f3a8138c0af7d31b6b61ad1ebaa85dcc9d2131"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:443-465 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:443-465 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:443-465 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:443-465 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":443}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3b0c4bdc17c67d07d5db1fc0debc7915080235f75b11265cfef5de0c8f7a712"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb:33-66 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb:33-66 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb:33-66 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb:33-66 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"1809ec771add761cad79112d93776157420d1b0f84768b5d087aeb756ef765a6"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:35-129 | 2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:35-129 | 2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:35-129 | 2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:35-129 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c244b65fd7072c7b49b66b3d67dea1132a7fb55c64134bd51addea9a9dfa3ce"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:140-162 | 2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:140-162 | 2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:140-162 | 2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:140-162 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"ced69757f71ca165fe325922648052d24aba22325d2d111b61adbbd02996aa60"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:174-219 | 2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:174-219 | 2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:174-219 | 2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:174-219 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"04e3f9c1e6392a6fbbfb32e356823a57903523aa65b3f9a39df0851531e65daa"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:370-387 | 2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:370-387 | 2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:370-387 | 2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:370-387 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1c3acbde2a0540c031462f91d64627ea423176544e97817fef4612e282fc48e"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb:16-42 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb:16-42 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb:16-42 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb:16-42 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ef8310a0d0d7e89f1b7804f74a385309d154a32ba6cc56d04fefef0dcea69b8"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb:136-151 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb:136-151 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb:136-151 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb:136-151 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0507010f455c5d1a3d1ed63e2d79143d2debf0bdbfe27a9f369260592cd9991"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:366-417 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:366-417 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:366-417 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:366-417 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":366}}}],"partialFingerprints":{"codehealthFindingId/v1":"82e95323305bd0c5f01a36244220c48355977dd7c364d5f4acf77005ae11daed"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:428-486 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:428-486 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:428-486 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:428-486 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":428}}}],"partialFingerprints":{"codehealthFindingId/v1":"db9b31c2b70390fe7491728c290c341629e0962a948837e5169028c1e81af510"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:497-555 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:497-555 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:497-555 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:497-555 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":497}}}],"partialFingerprints":{"codehealthFindingId/v1":"79dd104cfff8c9f6f2b282671e5916611b4cb02acc7f927a89f85f2cff032e64"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:728-755 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:728-755 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:728-755 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:728-755 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":728}}}],"partialFingerprints":{"codehealthFindingId/v1":"8efddee8b4a693a28b28159ef6045f806bf29ac92133a585d25d211b4625609e"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:70-92 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:70-92 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:70-92 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:70-92 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a521bf3331040991dd8031e96c9b66b52d94481b74acc4ed953fd9e5bc81456"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:100-119 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:100-119 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:100-119 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:100-119 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5495e77f82be03c7dc4f536c11a68a41c9c39918ee12a8c9e0510be4ae8b3ec"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:169-292 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:169-292 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:169-292 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:169-292 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b6cfbe14fb308e4dd69b2b0e9c113999944bf32ab78587e9227e88612ebc21c"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:300-411 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:300-411 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:300-411 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:300-411 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dea9dda8c50e0c0e4b34fa493412005f386fa827a4560b313e0fbeda41a131e"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:437-448 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:437-448 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:437-448 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:437-448 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"dba371b7e2b41f6e0d459feb06991d59ab2335332e575f9e36371aa414785e0a"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb:84-108 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb:84-108 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb:84-108 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb:84-108 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"340b9eb4cbe63390006eff68eb89b35fbd11190baccc30fdc16d96858c32187f"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb:71-148 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb:71-148 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb:71-148 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb:71-148 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"e022eaf29975b444ef8d7ee1b56bc15adbb4105e26f8f9fc5a440a78c3ed079b"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb:183-210 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb:183-210 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb:183-210 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb:183-210 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"584371f8753b6844d38319394a4ae05a980cf9a4007b35a3b71da5c2e8cef2d3"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:55-82 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:55-82 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:55-82 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:55-82 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffd2501b898841f2bc583de15678fd0575223e8c135d93ec6e311275e38e4ae6"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:421-446 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:421-446 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:421-446 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:421-446 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":421}}}],"partialFingerprints":{"codehealthFindingId/v1":"334ac84f5b5cef99e9403640adfa8d70769d5371dc50bda083bf49d39b5bd9db"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb:132-159 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb:132-159 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb:132-159 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb:132-159 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"879d034d5ddea3435d7f85482b81a0b455e56c522eed4d6e1cb6b0a89a6a7f7b"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFamily.vb:15-26 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFamily.vb:15-26 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFamily.vb:15-26 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFamily.vb:15-26 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFamily.vb"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"86cc13a8bc17727765bac64b8511538ab158420d8f2945b95a833e576b0e3b8a"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:59-146 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:59-146 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:59-146 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:59-146 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c84de56aaa886f32aa09c103676da214c14fe09a16ad2df494d643ab3c34c0f"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:160-300 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:160-300 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:160-300 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:160-300 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7335c9ae16b0d2733196a3059d5954ddecd770a39dc36e7e0e09d0f41ff9743"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:312-507 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:312-507 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:312-507 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:312-507 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1117b487dddfae4608a90bb2ed4c366d3ea55869476d0d2409f176f2cb37cb5"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:517-617 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:517-617 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:517-617 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:517-617 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":517}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3aebb9c532055384c95190a856bd01aded6095a2100a7a0e255438eb9804707"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:628-671 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:628-671 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:628-671 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:628-671 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":628}}}],"partialFingerprints":{"codehealthFindingId/v1":"93883be8c7ec74000088c454c263e2fc99d1c595089ae3cb163e3203487f5784"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:682-715 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:682-715 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:682-715 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:682-715 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":682}}}],"partialFingerprints":{"codehealthFindingId/v1":"137f5b6de6150fd4d94c473caa645bf479cf78b1c09bda38e13fcba767fd3c4d"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Modules/mod1.vb:9-45 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Modules/mod1.vb:9-45 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Modules/mod1.vb:9-45 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Modules/mod1.vb:9-45 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Modules/mod1.vb"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe1618aaa12b65520b70755cbcb362cc44f0295a1da81e03c088956ab323fe38"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:207-232 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:207-232 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:207-232 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:207-232 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"becfc2afb52f259238cd9c9ef1e1bc9fc0c84027b166cdbbfe43021f778c2173"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:53-104 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:53-104 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:53-104 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:53-104 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bac4400c909faaa471f9634221ad12c0045fb5628cea214697c503bf63d0bf9"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:116-169 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:116-169 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:116-169 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:116-169 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ec5fe71557f6e67daebb1594ddbcbaf21308bc83935e094b650c15e9fb3c3bf"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:182-206 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:182-206 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:182-206 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:182-206 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"813cacbdd5d5ff3a261b667ea3db8fa7e7ccd4f3f36747b621f0ecdcabeae720"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:219-238 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:219-238 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:219-238 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:219-238 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"aed167323d74d476b2ccf6ca83061612731bd11a8162d2d23b7141af1012de54"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:15-32 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:15-32 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:15-32 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:15-32 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fa6f31f3b858ef3248d67bebde2bbd104371c57d9355e327fc9c2403aabfc5d"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:47-95 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:47-95 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:47-95 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:47-95 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"142913414b5688bc69a005618c7dd699f6cdcc40ef40bf18290582431f02cabb"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:408-456 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:408-456 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:408-456 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:408-456 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a4bd1c88d7494cb3095628df35d894962c40732cc1636490ee04d8b7d0646e1"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:96-138 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:96-138 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:96-138 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:96-138 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c6b657ecba28df01120e6a8f88925f085b1b655569121405d7216de098339e9"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:152-194 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:152-194 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:152-194 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:152-194 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"e44d9d0093c3662f3d050b34074760ad1380c57a0a328fe181cd1de3364c9149"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:205-223 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:205-223 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:205-223 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:205-223 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfaf556a1aff0f0fb57546d5052ff85227259d4e64a709b565e931bb251a07a1"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:357-374 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:357-374 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:357-374 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:357-374 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"de8e2f7f96c422fab45e3ca3809248b05730e1751053bf42bf012305b15cf141"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:412-463 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:412-463 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:412-463 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:412-463 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":412}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fccd6ba7d375ec9b20c273364401b68cf436f7d0da84463e911d949f44dd138"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:14-101 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:14-101 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:14-101 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:14-101 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"b38010bb9f8ee147d5cd6571542d001887b54a75291f79c7a2cb358b20fae457"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:154-293 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:154-293 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:154-293 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:154-292 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c6be8769cb88eb2aed793944d7c1414b90af447ad5063d232e3776ff53598c7"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:303-331 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:303-331 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:303-331 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:302-330 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":303}}}],"partialFingerprints":{"codehealthFindingId/v1":"4aec1cfd1693e882501efc650bc682b644ae83ad333ae1b1451e623ba96b8369"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:340-355 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:340-355 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:340-355 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:339-354 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"6635854cb0c1f06d665101f0932e13c5a4dc6067ccca0d63a39d781a19133ba5"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:390-463 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:390-463 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:390-463 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:389-462 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":390}}}],"partialFingerprints":{"codehealthFindingId/v1":"f00a2fc51fdedb115001341b153ef4772b07f3db15c75ab6214ea0615b3a1857"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ApplySysOrient/Data/clsSettings.cs:76-98 | 2016/Case.ApplySysOrient/Data/clsSettings.cs:76-98 | 2017/Case.ApplySysOrient/Data/clsSettings.cs:76-98 | 2018/Case.ApplySysOrient/Data/clsSettings.cs:76-98 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"d731e193d38f89f3f090e8583be4f33390982bdab46064af2d1520557827fcb7"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ApplySysOrient/Entry/CmdMain.cs:23-75 | 2016/Case.ApplySysOrient/Entry/CmdMain.cs:23-75 | 2017/Case.ApplySysOrient/Entry/CmdMain.cs:23-75 | 2018/Case.ApplySysOrient/Entry/CmdMain.cs:23-75 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Entry/CmdMain.cs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"c06696759564a27eff1567ce5b4b656a5e43c8246af5e3464b7f5d96e9d6976a"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ApplySysOrient/Data/clsUtil.cs:53-83 | 2016/Case.ApplySysOrient/Data/clsUtil.cs:53-83 | 2017/Case.ApplySysOrient/Data/clsUtil.cs:53-83 | 2018/Case.ApplySysOrient/Data/clsUtil.cs:53-83 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsUtil.cs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"69dc5d46f250ef4539e3862a0fafaa17a89d6e243675d5611ab491cae8f9ce5e"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb:31-61 | 2016/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb:31-61 | 2017/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb:31-61 | 2018/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb:31-61 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9b62477ce6ab0d35dfb6f6574123230d2e7046820de88b4cb53c9a48abd929e"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb:74-109 | 2016/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb:74-109 | 2017/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb:74-109 | 2018/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb:74-109 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c8b88d216be1faf73b1646d3f05321cd22eca11e31ff9f9768b11c72223ec07"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:122-168 | 2016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:122-168 | 2017/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:123-169 | 2018/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:123-169 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"367a6b9871520926f79ff765ac912393d791d12c1bc426affab580078cd63e8f"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:253-322 | 2016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:253-322 | 2017/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:254-323 | 2018/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:254-323 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"f22198a237336ea09764e688d0182c17d270f8fb263d1e70c15669fc4144c860"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:334-416 | 2016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:334-416 | 2017/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:335-417 | 2018/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:335-417 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfff57b3daedbd49470bd687231e4aaa1e03b5916d5a9c15491a51525c57e8f9"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb:33-41 | 2016/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb:33-41 | 2017/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb:33-41 | 2018/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb:33-41 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"d20245101edd2ef89eeb3cd714266e9f87e1ba6ec1d08d95a92d4da441c3ef8b"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb:52-146 | 2016/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb:52-146 | 2017/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb:52-146 | 2018/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb:52-146 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c9e24d69a344ab71398bf790ceefb70a10a3c300fad5333e384e6852bc0cc00"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb:93-131 | 2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb:93-131 | 2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb:93-131 | 2018/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb:93-131 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd7190ac659e293591dd7303f3a2873547e22717116b38da65ea7ab8194293dd"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb:144-201 | 2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb:144-201 | 2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb:144-201 | 2018/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb:144-201 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e74574b020357b3d9a67a5c421b9ba44f7969eeb58f2792216b7581aa68a788"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb:212-229 | 2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb:212-229 | 2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb:212-229 | 2018/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb:212-229 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"07ac6c5ec384803106247232df7e64efb68ea45a2f6c3f817b57e2d591cc2ca2"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb:31-96 | 2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb:31-96 | 2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb:31-96 | 2018/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb:31-96 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"36bc6ff6f5dad21eef5f78e9ce2506c7944cd716185ffc2bc98d659752fbaddf"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb:229-267 | 2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb:229-267 | 2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb:229-267 | 2018/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb:229-264 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"b23f8eca2c28bda734c8cfca25bfa36ad6c26a55ba4920f6bdc94c4236ce3e4d"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:27-67 | 2016/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:27-67 | 2017/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:27-67 | 2018/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:27-67 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"4df41306214788805eacdd387d108eb029c5d507a1c52d807fc641cf74a59c6d"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:88-118 | 2016/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:88-118 | 2017/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:88-118 | 2018/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:88-118 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"b40a5f1691c5d05a4166049463075c877153ff9c0648cc8e77cdc65f411790cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:131-166 | 2016/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:131-166 | 2017/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:131-166 | 2018/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:131-166 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce860aa7b7db1820f178e56227719a331c5fbbaebb0fad59e02a04373cc41774"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:177-320 | 2016/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:177-320 | 2017/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:177-320 | 2018/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:177-320 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"69fd53fb4f9bbd844a0d94e73832e4839a10d0db0c084989b10124d64c318eb6"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Directionality/Case.Directionality/Data/clsParamItem.vb:25-43 | 2016/Case.Directionality/Case.Directionality/Data/clsParamItem.vb:25-43 | 2017/Case.Directionality/Case.Directionality/Data/clsParamItem.vb:25-43 | 2018/Case.Directionality/Case.Directionality/Data/clsParamItem.vb:25-43 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/Data/clsParamItem.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"b248d70a5c9c9f4afb2ee9930c604d762a076ee9ca6776a9e3264261d1387bfa"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Directionality/Case.Directionality/UI/form_Main.vb:131-217 | 2016/Case.Directionality/Case.Directionality/UI/form_Main.vb:131-217 | 2017/Case.Directionality/Case.Directionality/UI/form_Main.vb:131-217 | 2018/Case.Directionality/Case.Directionality/UI/form_Main.vb:131-217 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/UI/form_Main.vb"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d3578090076e478522989e2a28a827da9734cad04fdc00aa630bff84b7476da"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb:145-165 | 2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb:145-165 | 2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb:145-165 | 2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb:145-165 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"143bddbd19392b222adc58927d89b1ac8a03ae838cee2d3b845e1ebf489adce0"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb:178-206 | 2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb:178-206 | 2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb:178-206 | 2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb:178-206 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"e260519bb9c435dd4b80a12330210cbc9a494c3265ba2c1344980fa27417c44d"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Entry/CmdMain.vb:28-75 | 2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Entry/CmdMain.vb:28-75 | 2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Entry/CmdMain.vb:28-75 | 2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Entry/CmdMain.vb:28-75 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Entry/CmdMain.vb"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"aec1a48a2ea9a4fc6cfb7864b6794e562395a25851581d89b9cc34ad28a20d72"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:69-205 | 2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:69-205 | 2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:69-205 | 2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:69-205 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f6a3c40bf25164a4ed6cf1ba0bc9e116e97745b423814d2b34f1b7d73481a90"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:216-267 | 2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:216-267 | 2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:216-267 | 2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:216-267 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4e8c8715271b699d8510ae8e02ecc1fc5c3fca8841ec9ca993cf7ecefca81b8"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:374-393 | 2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:374-393 | 2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:374-393 | 2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:374-393 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d30d550566471230fa84bd5114b7983711433429ef4d198644748a5134bdcac"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:205-218 | 2016/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:205-218 | 2017/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:205-218 | 2018/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:205-218 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"f80a2fa782dfbde1fb83e5e69e66e054f7a2e3d7acfb601864e82a9ea57fb963"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:234-253 | 2016/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:234-253 | 2017/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:234-253 | 2018/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:234-253 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3aee994204d7ac74b11150e582119cca1e3a35959a06c1eb17d2bcd494728c1"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs:30-166 | 2016/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs:30-166 | 2017/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs:30-166 | 2018/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs:30-166 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb63d535ca3722b4641f3be7fbeba8e70f609dc66a88eed32bfe7611f9b83163"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:117-144 | 2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:117-144 | 2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:117-144 | 2018/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:117-145 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"684aba1fd3890efb1eaeb91094b14da784d33fcb51a4f652c5435154e0119d03"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:155-185 | 2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:155-185 | 2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:155-185 | 2018/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:156-186 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"a30c5bd473201784ff7dbc5c37a278e00bde9f2b3f63c32ed4c394aed9bbb35c"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:448-482 | 2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:448-482 | 2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:448-482 | 2018/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:449-483 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":448}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa4811080f3842a7bae59a52185e19e5c179e7e5b34bd4a55db66e3a0693b27e"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb:94-119 | 2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb:94-119 | 2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb:94-119 | 2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb:94-119 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"697f273ec47f35fed16c083fa37a3f768d2e41398b1abd16b376359a9632a1fa"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb:198-229 | 2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb:198-229 | 2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb:198-229 | 2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb:198-229 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f890593ebaafabda6ae24c4035166f1c14b60ce01aec0220b9e5bad250f9032"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsSettings.vb:99-111 | 2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsSettings.vb:99-111 | 2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsSettings.vb:99-111 | 2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsSettings.vb:99-111 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsSettings.vb"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b597171615b6cd2d19addf5797686cd4f653902ea0d65e34dc8ac63d63ba937"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb:68-97 | 2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb:68-97 | 2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb:68-97 | 2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb:68-97 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"f50e43cdd87e8f426023908abda99b8bf82c56783e50ebe343eae5a2bb5c3d54"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb:110-207 | 2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb:110-207 | 2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb:110-207 | 2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb:111-202 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"d419a49d9f26d3e7ca48fa0cfee916841c3d755ca2647800eee41d739352964f"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb:67-135 | 2016/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb:67-135 | 2017/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb:67-135 | 2018/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb:67-135 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"e33b14678ae1b51fdac635a38f22e327f063f6158a8fc2a5624cdd8688a43788"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb:149-197 | 2016/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb:149-197 | 2017/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb:149-197 | 2018/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb:149-197 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a2419f4281d42ce7c45808ae65dc96b8a10f32a7fdec94560d2372cedfec8bc"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:98-120 | 2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:98-120 | 2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:98-120 | 2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:98-120 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9917c7a255cf0a2fc165244fbf5d747f399ef7895a59b01469249c3926aac71"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:185-274 | 2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:185-274 | 2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:185-274 | 2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:185-274 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"45fc00645641489114cee9d40083c7a5bcaf0ba2fa1eea30ccaf480bf03eab80"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:286-343 | 2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:286-343 | 2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:286-343 | 2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:286-343 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"541825b8af30818263070dfd31375a33164f588aed04193fa5c3fbde5a001e2e"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:358-379 | 2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:358-379 | 2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:358-379 | 2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:358-379 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":358}}}],"partialFingerprints":{"codehealthFindingId/v1":"941d68306dfd8920c36f6a5ece40160122609890eecf364754539096691b4a27"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:390-411 | 2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:390-411 | 2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:390-411 | 2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:390-411 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":390}}}],"partialFingerprints":{"codehealthFindingId/v1":"9871c3708c66a15ebd78f340239ca355a81ecf0be7fd8d753f38d77b4faae805"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:511-532 | 2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:511-532 | 2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:511-532 | 2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:511-532 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":511}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd3648a10d9b13ca36e43b6c958a912f1828632b2bf08f300875d97cb79dd6aa"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:29-77 | 2016/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:29-77 | 2017/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:29-77 | 2018/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:29-77 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2331057ab89677023c7629be486c6c6b0fc19049918ad9b358864ff94c14959"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:89-133 | 2016/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:89-133 | 2017/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:89-133 | 2018/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:89-133 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0460719ad7a5caec83c5870997783f0d3f5a2a253723b09aa8125fa3b051d90"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:181-199 | 2016/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:181-199 | 2017/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:181-199 | 2018/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:181-199 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"3429b2754007a53c6d35b011088ae2f68f4db3d194d80d3ac17f37757ad2706e"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:411-459 | 2016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:411-459 | 2017/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:411-459 | 2018/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:411-459 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a0a2ee593c73292a15c03e1b0b335e3f906a8c47d30486915e75f3b7c07a953"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:471-493 | 2016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:471-493 | 2017/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:471-493 | 2018/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:471-493 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":471}}}],"partialFingerprints":{"codehealthFindingId/v1":"eee789b12bf2d911d6bbb934a352581ead91b0e6405d748773aab39f19b1eab4"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb:199-263 | 2016/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb:199-263 | 2017/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb:199-263 | 2018/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb:199-263 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c2890f60a2fab2c668f8db727f5070649fa4c9a2d4b54d21189589b057a2799"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.LineChanger/Case.LineChanger/Forms/form_Main.vb:32-59 | 2016/Case.LineChanger/Case.LineChanger/Forms/form_Main.vb:32-59 | 2017/Case.LineChanger/Case.LineChanger/Forms/form_Main.vb:32-59 | 2018/Case.LineChanger/Case.LineChanger/Forms/form_Main.vb:32-59 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LineChanger/Case.LineChanger/Forms/form_Main.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"8121a99a1001031999a5b4e92d0d44dc2fa42bf8c7bfcd7e66d9a13d187180b7"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb:232-280 | 2016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb:232-280 | 2017/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb:232-280 | 2018/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb:232-280 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4f65f754d63efd70f6c5a3f7bbcbdbaeadd314b2781b58fea2f2c7334ef9743"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb:124-168 | 2016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb:124-168 | 2017/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb:124-168 | 2018/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb:124-168 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d4cd02524f44f6305640b9be6d03b7204b0e8f4558dfa863ca714321f44752b"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb:239-275 | 2016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb:239-275 | 2017/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb:239-275 | 2018/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb:239-275 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e362bd610f8b73bb647d2528a7f3073947408bd3698cd6c0c798b51515bc919"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb:292-323 | 2016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb:292-323 | 2017/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb:292-323 | 2018/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb:292-323 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7a5d2bb34a2b1ad22fa85658295fe039cb3a2393b22d31cadad79a29ce6ece8"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb:100-183 | 2016/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb:100-183 | 2017/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb:100-183 | 2018/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb:100-183 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"09a65f12ad24fc642d3cb0690a831ba8512bc43e87341c75dc95282ce5ba548d"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb:179-236 | 2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb:179-236 | 2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb:179-236 | 2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb:179-236 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2bfd28ee0b058b97bf91aabdabad06ea7a87d1e9dc52a4507ff9ea746bd0267"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:24-40 | 2016/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:24-40 | 2017/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:24-40 | 2018/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:24-40 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"919188d2fe6cfa6994f349aa70548b4a476b0812be6615ec2aff0c916fc2e8f3"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:103-121 | 2016/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:103-121 | 2017/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:103-121 | 2018/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:103-121 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7dc482972f303852820b18159cfb7925417359284d21e31496054a81b77f4b9"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:131-195 | 2016/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:131-195 | 2017/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:131-195 | 2018/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:131-195 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8e64616bae2ab9f552d815d90b88e1ada1b15f3d601862b25048d8a83d40081"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:205-231 | 2016/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:205-231 | 2017/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:205-231 | 2018/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:205-231 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"abf671d4cd3526824f79c557cd046a8250081d6208a1b802dd3fb3e74301db32"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs:37-89 | 2016/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs:37-89 | 2017/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs:37-89 | 2018/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs:37-89 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5a4825c7ca9a40c5747d43809c83bc0886277310a9c81c7bfa06939a9b8a8ff"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs:113-134 | 2016/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs:113-134 | 2017/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs:113-134 | 2018/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs:113-134 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2c7f1b802feaec07891f019c96dc58302be232e1f4f4e37d2838f93c7380564"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.RevClouds/Case.RevClouds/Data/clsRevcloud.vb:118-162 | 2016/Case.RevClouds/Case.RevClouds/Data/clsRevcloud.vb:118-162 | 2017/Case.RevClouds/Case.RevClouds/Data/clsRevcloud.vb:118-162 | 2018/Case.RevClouds/Case.RevClouds/Data/clsRevcloud.vb:118-162 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RevClouds/Case.RevClouds/Data/clsRevcloud.vb"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"65d117d8d38db1dbc49533f6568b31628934639ca9d30a34b499ec3c5e828d25"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.RevClouds/Case.RevClouds/Data/clsSettings.vb:80-119 | 2016/Case.RevClouds/Case.RevClouds/Data/clsSettings.vb:80-119 | 2017/Case.RevClouds/Case.RevClouds/Data/clsSettings.vb:80-119 | 2018/Case.RevClouds/Case.RevClouds/Data/clsSettings.vb:80-119 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RevClouds/Case.RevClouds/Data/clsSettings.vb"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"62e52b55c31066a9a5d9b8dfc0530d78d769c15955b0cc0a7f9cb441890782a6"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb:92-139 | 2016/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb:92-139 | 2017/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb:92-139 | 2018/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb:92-134 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c7ba94c7cf5eee29e2afb345dab90bb591d86636f7c895260fe444c0dc350f2"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Entry/CmdMain.vb:27-117 | 2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Entry/CmdMain.vb:27-117 | 2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Entry/CmdMain.vb:27-117 | 2018/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Entry/CmdMain.vb:27-112 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Entry/CmdMain.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"643394972f366bbc2550d5b9b5efce01b34fc680e170d2fc2167704cdaa006c6"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.SharedParameters/Case.SharedParameters/Data/clsSharedParameters.vb:132-173 | 2016/Case.SharedParameters/Case.SharedParameters/Data/clsSharedParameters.vb:132-173 | 2017/Case.SharedParameters/Case.SharedParameters/Data/clsSharedParameters.vb:132-173 | 2018/Case.SharedParameters/Case.SharedParameters/Data/clsSharedParameters.vb:132-173 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ae5bd386a514d88fc9d2805afb9e8bcfb71906123f9dafb9bf08c4395612d6d"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:80-91 | 2016/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:80-91 | 2017/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:80-91 | 2018/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:80-91 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"c594d49b27de6973639d1e56bad9fc9e947361c04d8d9109bfbc5e41ac288a8b"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:207-238 | 2016/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:207-238 | 2017/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:207-238 | 2018/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:208-233 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6001bb33cadec20cf9c02b0649a2cd2b4d3f121d8fd0c197b2a1d6c721c4755"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ViewportReporting/Case.ViewportReporting/Data/clsSettings.vb:21-38 | 2016/Case.ViewportReporting/Case.ViewportReporting/Data/clsSettings.vb:21-38 | 2017/Case.ViewportReporting/Case.ViewportReporting/Data/clsSettings.vb:21-38 | 2018/Case.ViewportReporting/Case.ViewportReporting/Data/clsSettings.vb:21-38 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewportReporting/Case.ViewportReporting/Data/clsSettings.vb"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"60fce097e537595c97477d800c99469a55d47d23ca5c242c11f6ebdf6ce1b7b2"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs:37-63 | 2016/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs:37-63 | 2017/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs:37-63 | 2018/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs:37-63 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"928f63700dfd6fb14e748e6924ba1e400110c2941b40232a23c83d2354704efd"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs:133-174 | 2016/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs:133-174 | 2017/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs:133-174 | 2018/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs:133-174 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfa7410cb22b59bfdf177541d59c2cb046eb7a7daca1c9301b3aa1135d834b22"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:24-46 | 2016/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:24-46 | 2017/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:24-46 | 2018/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:23-45 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bb29191f5af97b648fe6590d57ead4b8ecaccc70ad8215ec9cfed2958863fdb"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:65-126 | 2016/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:65-126 | 2017/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:65-126 | 2018/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:64-122 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"2302f6160154d5fff6b3a05e664c66382106a37c5d249c1f1572cfeea475c65c"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:144-159 | 2016/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:144-159 | 2017/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:144-159 | 2018/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:140-155 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"78c766028d3a0b8d29719505b083a74ede8d4a54c1ffc639ce028585d16e2bc9"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:165-183 | 2016/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:165-183 | 2017/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:165-183 | 2018/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:161-179 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a9fb5873da65a6ec030b38334e7f53f87bcd4f00605f7d206d7af76c176a073"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Navis2BCF/Case.Navis2BCF/CASERibbon.cs:80-118 | 2016/Case.Navis2BCF/Case.Navis2BCF/CASERibbon.cs:80-118 | 2017/Case.Navis2BCF/Case.Navis2BCF/CASERibbon.cs:80-118 | 2018/Case.Navis2BCF/Case.Navis2BCF/CASERibbon.cs:80-118 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/CASERibbon.cs"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"45da5bbbf4bf7046df6fd62d5bac65458f4ec82dec40a2d367ef15a2a5455856"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:41-56 | 2016/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:41-56 | 2017/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:41-56 | 2018/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:41-56 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"82adf2b20b21aaa6122b792a7512dbcb7d66321201530571aabb4b29a62b9709"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:67-87 | 2016/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:67-87 | 2017/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:67-87 | 2018/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:67-87 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"b74d7220fe514fed92754414ca8599f93cf8ddc415f6f8276498dd5fc9880c45"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:100-125 | 2016/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:100-125 | 2017/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:100-125 | 2018/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:100-125 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"e575da35d7cfbbf84a4cf78729183b8cd54b5cb2d3d53c55d3c49f18cb5887d9"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:134-157 | 2016/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:134-157 | 2017/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:134-157 | 2018/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:134-157 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"56928817f268e2b27161be36ae349c12d04959ce432945afa4eb03ef1eb62d5a"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:63-116 | 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:63-116 | 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:63-116 | 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:63-116 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"7824c50a08dfc30084b9c8904d6918cef5b83fe92ca540be19b44917992a4f3c"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:130-152 | 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:130-152 | 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:130-152 | 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:130-152 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"3aa02de6465fc06b4d3a4c30223c047017aa3f5dec1f18b34fe57584bb906be4"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:171-186 | 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:171-186 | 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:171-186 | 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:171-186 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"572e43c420135895558d79061478f4c957722a55f916ad8b0db57c51d22a8507"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:193-216 | 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:193-216 | 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:193-216 | 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:193-216 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"5217f12744f2206ef2e831a0d7ba797f7288bda74fad37457b33a784eb42f8b1"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:223-292 | 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:223-292 | 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:223-292 | 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:223-292 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2afe65616546d6927a024431a432b1af5d7f5832417729dd2e819c76e9003d6"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:300-328 | 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:300-328 | 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:300-328 | 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:300-328 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3dab784f22b50f47ce04a59f19088972825e8fd084daa2e59b23200debce71f"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:345-364 | 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:345-364 | 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:345-364 | 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:345-364 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"c824b4125f3095e497e4bbd5a3aacf0f37c59f2b70c01b4a9cf2ee51faa15c2e"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:377-401 | 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:377-401 | 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:377-401 | 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:377-401 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":377}}}],"partialFingerprints":{"codehealthFindingId/v1":"d967c9a49a0919bcfde602abd2ff0c919c684c514f6490dc6e8cd1cefba295fc"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:507-519 | 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:507-519 | 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:507-519 | 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:507-519 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"0691ac3050a95f3629822ca3426e35810c8ce1acb200480c071e5df66c651812"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:527-539 | 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:527-539 | 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:527-539 | 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:527-539 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":527}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e951cfec98e9316501b43fbf1efd6bde7fe975d9f309868b469096370462108"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:548-564 | 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:548-564 | 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:548-564 | 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:548-564 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":548}}}],"partialFingerprints":{"codehealthFindingId/v1":"d09edf582b46fbe9fdd6eb5fbca2a77a318bb570e7c40357662b855292579f5d"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:566-607 | 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:566-607 | 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:566-607 | 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:566-607 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":566}}}],"partialFingerprints":{"codehealthFindingId/v1":"90eee5031c2f2e2286650295a906a1fdc70658414542fbdda7c76d94502cf00f"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:124-148 | 2016/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:124-148 | 2017/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:124-148 | 2018/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:124-148 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee7c83f3afa523b874606edca3a46e391f68a4c8504f95ee6355dc658480addc"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:156-173 | 2016/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:156-173 | 2017/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:156-173 | 2018/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:156-173 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"5405371559621733df7b9ae7d1e3a68a44f8de130436bff215da1225b52d995e"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:181-203 | 2016/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:181-203 | 2017/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:181-203 | 2018/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:181-203 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"825c891074a61b8bc9d08e879c8fe98ff4e0041198c030caf5f9f50beb07d911"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:210-232 | 2016/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:210-232 | 2017/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:210-232 | 2018/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:210-232 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"15d4d83b813252225edbc82e67b4ff2d0481cd3fe215b617916cb746336611df"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs:39-194 | 2016/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs:39-194 | 2017/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs:39-194 | 2018/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs:39-194 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bb2094b60aecf54cd6a07eba1428b75e9608bad73a19008730383edade12ee1"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs:206-229 | 2016/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs:206-229 | 2017/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs:206-229 | 2018/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs:206-229 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"27d62fd0ba83f3a88206e0ad110e4a503f85ff177e9114ef6920abd0f451bb52"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnSettings.cs:56-73 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnSettings.cs:56-73 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnSettings.cs:56-73 | 2018/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnSettings.cs:56-73 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnSettings.cs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb81b282e42df87527aa30c5b8d52ee63d857db0a0cdb553364618b3aca95dfa"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnSettings.cs:82-95 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnSettings.cs:82-95 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnSettings.cs:82-95 | 2018/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnSettings.cs:82-95 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnSettings.cs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"48fcc6054146180729ff91cfe1dd4382f2d641c53d2cb0d7098163e04f2f4464"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:51-91 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:51-91 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:51-91 | 2018/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:51-91 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"16623398c34391ac685bda7f2f4e968be40c3f93758a5b21f2ee1bcde4a3b8fd"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:110-122 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:110-122 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:110-122 | 2018/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:110-122 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fbeaecfbef6e2971d519f1bda573a307b3d12b405c4ca69204486c2794d087a"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:130-152 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:130-152 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:130-152 | 2018/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:130-152 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ebc6a066fe282c9ac50ab0667378f4d57890673733b009e2ab3a8dde5b54525"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:159-184 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:159-184 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:159-184 | 2018/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:159-184 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"e31bb040ae1b850c76b7ca63f6fa8c3eda778a95acf65ef20293cf3e1a6cf471"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:196-234 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:196-234 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:196-234 | 2018/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:196-234 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"06ecf055c8b95eaab00a095ddea0c47465df0af5f456933b826787153474922c"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb:49-69 | 2016/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb:49-69 | 2017/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb:49-69 | 2018/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb:49-69 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"9aab14b0791ca24e1b1a826f9de9d95335bdd019df834e12035ae7d4832a0178"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:123-164 | 2016/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:123-164 | 2017/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:123-164 | 2018/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:123-164 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd271989dac79861852859a4153aaf01015fc9fb784b1bdaaddf389ee638981c"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:200-225 | 2016/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:200-225 | 2017/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:200-225 | 2018/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:200-225 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b42e3d16ef980972679f1ccbd192a877c397af9dd06d302a992ff1acb1c574f"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:313-347 | 2016/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:313-347 | 2017/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:313-347 | 2018/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:313-347 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"43b66613dea5d1255cc49c1f2c30ffc37401d41716cffcabbb9e0053e8c9b475"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb:138-178 | 2016/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb:138-178 | 2017/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb:138-178 | 2018/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb:138-178 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4570418e0c57cc9f30b7cb3f6c8709b72744f3e77fc229c2346fed2b1a63927"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb:255-284 | 2016/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb:255-284 | 2017/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb:255-284 | 2018/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb:255-284 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a7b3ab1fa01a12b2ae1208ca9eeee4fce6aff8be7309de4118f3206e693dbf3"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs:136-148 | 2016/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs:136-148 | 2017/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs:136-148 | 2018/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs:131-143 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"b71e9f568cf866feaa90be49ab0108cb75b15d96a0867d9cee06283a6e0c5ea1"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallTransform.cs:90-124 | 2016/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallTransform.cs:90-124 | 2017/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallTransform.cs:90-124 | 2018/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallTransform.cs:85-119 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallTransform.cs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5b49e0ae27d65b7b6969bc844202f3b411fa959fdd6ec9950edbf8d6f8cd46d"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.KeyMatcher/Entry/CmdMain.cs:22-50 | 2016/Case.Subs.KeyMatcher/Entry/CmdMain.cs:22-50 | 2017/Case.Subs.KeyMatcher/Entry/CmdMain.cs:22-50 | 2018/Case.Subs.KeyMatcher/Entry/CmdMain.cs:22-50 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.KeyMatcher/Entry/CmdMain.cs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"27e56534b0a43ae86186ea14227e3e7a5c2b5cb3fb600220854abab6b577a19d"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:135-161 | 2016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:135-161 | 2017/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:135-161 | 2018/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:135-161 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1ca414fb4b1992879233cd66181ae66bfcd015de5c6bc53487d22a4cef71733"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:170-186 | 2016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:170-186 | 2017/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:170-186 | 2018/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:170-186 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fc1f64910d4a44de55e10f920418146519ba8c78b69973acf3e9362a93d89ac"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:195-211 | 2016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:195-211 | 2017/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:195-211 | 2018/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:195-211 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a59ed6d0da0561341654dd0bcac58c34830d225829c906b9fe84aac895c71e8"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.DimensionOverrides/Case.DimensionOverrides/Data/clsSettings.cs:54-89 | 2016/Case.DimensionOverrides/Case.DimensionOverrides/Data/clsSettings.cs:54-89 | 2017/Case.DimensionOverrides/Case.DimensionOverrides/Data/clsSettings.cs:54-89 | 2018/Case.DimensionOverrides/Case.DimensionOverrides/Data/clsSettings.cs:49-84 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DimensionOverrides/Case.DimensionOverrides/Data/clsSettings.cs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"871e07e3bdc62d44cfc53a502d74ae9508ee766343c1eb430a7004c3974b0c20"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsSettings.vb:99-110 | 2016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsSettings.vb:99-110 | 2017/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsSettings.vb:99-110 | 2018/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsSettings.vb:99-110 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsSettings.vb"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"396e4ef47857066c9d672be6c49511701e7b7cacf71c059be8792d68c21d1ab5"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:39-61 | 2016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:39-61 | 2017/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:39-61 | 2018/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:39-61 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"5af0b47de6f6ca8f72960c5404b3e649bc92ca4951fc3df6c76e4d6dcb1f1f04"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:146-171 | 2016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:146-171 | 2017/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:146-171 | 2018/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:146-171 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddc06ee1a0ee278980f7bf9b66aede65f01b7316c4cc8ed5bfa56b00b5337448"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:183-199 | 2016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:183-199 | 2017/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:183-199 | 2018/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:183-199 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"679f7e738c0e64a6a6e60e643af614be0e434dfaa3a3525b6f6dbf07d8b901b4"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/cmd.vb:22-47 | 2016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/cmd.vb:22-47 | 2017/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/cmd.vb:22-47 | 2018/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/cmd.vb:22-47 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/cmd.vb"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"14efcb180d27d582e146bbd1527330cb4707af86853d4bc06351b6f70d8c0a68"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Modules/LogData.vb:20-60 | 2016/Case.FreeBenchmarking/Case.FreeBenchmarking/Modules/LogData.vb:20-60 | 2017/Case.FreeBenchmarking/Case.FreeBenchmarking/Modules/LogData.vb:20-60 | 2018/Case.FreeBenchmarking/Case.FreeBenchmarking/Modules/LogData.vb:20-60 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Modules/LogData.vb"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ae570071bbb97901e55a2bb726d2a195ab3477d8b1b8ac70123eace659f0e5a"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs:59-88 | 2016/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs:59-88 | 2017/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs:59-88 | 2018/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs:59-88 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b40bfd6bca69b2ab4350f1e2b039c7048a2d468eb4e453dc1b35f0a1b9a9e89"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs:35-58 | 2016/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs:35-58 | 2017/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs:35-58 | 2018/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs:35-58 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee1f1be8190ed8f1ded8a7007e27955f2f1cff46d14c5fce380908c89be0cc7a"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): 2015/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs:76-162 | 2016/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs:76-162 | 2017/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs:76-162 | 2018/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs:76-162 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5a1f51be19f0b0a5b8b793e5f97876be520552f0772e3af2ad0a11dbe999559"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (241 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:711-951 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:711-951 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:711-951 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:711-951 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 610 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":711}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d8d8d73711744bbf75e250c42e47fe991d303d3ef283fa5e2af4c47b4e1e81b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (219 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb:63-281 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb:63-281 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb:63-281 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb:63-281 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 283 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a2499303acee53b481db15ac71d9d6f672c0f880d43fdcaed2b0a3320203eb2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (196 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:312-507 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:312-507 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:312-507 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:312-507 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 604 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"b71533ef77156c9f6ee5b42fb0677f3d602457ec33a2b4a6752cad97854668b0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (191 lines \u00D7 4): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:44-234 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:44-234 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:44-234 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:44-234 \u2014 before extracting anything, compare \u00602015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb\u0060 and \u00602016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 500 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"a37609c7374d92b8b7ba535ba5d964fc7e774ea5224144ba3b58d0dcea31f31c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (176 lines \u00D7 4): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:56-231 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:56-231 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:56-231 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:56-231 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 299 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"4133e41062952d1d3e7a47ed7eac5b6e274d0631b43f76d810ecd996c3ee4800"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (172 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb:61-232 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb:61-232 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb:61-232 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb:61-232 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 229 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bf4318fdd3a5f289cabcd77d4940279bc6e7b097479eeecf3e0bd544600f4a1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (158 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb:390-547 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb:390-547 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb:390-547 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb:390-547 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 402 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":390}}}],"partialFingerprints":{"codehealthFindingId/v1":"792881dc773aae674c8a78a3fd726429a71195f6eb5bf4494152fe1d3734a611"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (155 lines \u00D7 4): 2015/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs:40-194 | 2016/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs:40-194 | 2017/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs:40-194 | 2018/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs:40-194 \u2014 before extracting anything, compare \u00602015/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs\u0060 and \u00602016/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"d915b319d665555279656d309a10d5e5cdfbf162b2be3683495fa0343a1b39fa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (144 lines \u00D7 4): 2015/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:177-320 | 2016/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:177-320 | 2017/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:177-320 | 2018/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:177-320 \u2014 before extracting anything, compare \u00602015/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb\u0060 and \u00602016/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 252 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c7bdbd96fd59160ba31d94c51029b41eac07e6091ee8f4edf24ec5f030fb01d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (141 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:160-300 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:160-300 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:160-300 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:160-300 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 604 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"319bdfe896d9601d657f9b047bba3a0bcac79dcdd65199744ab526b8f7fc4e8c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (139 lines \u00D7 4): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:274-412 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:274-412 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:274-412 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:274-412 \u2014 before extracting anything, compare \u00602015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb\u0060 and \u00602016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 500 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ab53db33cc057d62120c536174ab26f136087ac24b8a448a0df23e011e64bc9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (139\u2013140 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:154-293 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:154-293 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:154-293 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:154-292 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 317 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"d08295a09aeea0198c4a79ec51bde067640766bc2430985dadaa522515609e30"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (134 lines \u00D7 4): 2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:195-328 | 2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:195-328 | 2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:195-328 | 2018/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:196-329 \u2014 before extracting anything, compare \u00602015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb\u0060 and \u00602016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 364 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9412e268ace9b8c351f5a480530f2c5c61c9ad402bb755017585e1954a0c815"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (128 lines \u00D7 4): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:57-184 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:57-184 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:57-184 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:57-184 \u2014 before extracting anything, compare \u00602015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb\u0060 and \u00602016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 323 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"19826b9b5123d306acb46837c78b291146ff536390fb8cec9d2a66a0d12d00cb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (126 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:124-249 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:124-249 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:124-249 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:124-249 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 610 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"9627e439889e39fc5bb6a9cf7e7fd66039901c933b1a2575644d4e91a0e7af00"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (126 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:313-438 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:313-438 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:313-438 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:313-438 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 247 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd04d321bc2af4ab08281ba6b47e2031603bc632e1eb7eb65571db5af3d42802"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (124 lines \u00D7 4): 2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:169-292 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:169-292 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:169-292 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:169-292 \u2014 before extracting anything, compare \u00602015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb\u0060 and \u00602016/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 323 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5477d8445c8664b4b4288f010c3b1e8e30495b437e2f62611ddec4c49371f08"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (122 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:286-407 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:286-407 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:286-407 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:286-407 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 221 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"d223691ebc630a990a0d038f18e1428c27b417421ed38b1feeedac06bb0dc17b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (112 lines \u00D7 4): 2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:300-411 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:300-411 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:300-411 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:300-411 \u2014 before extracting anything, compare \u00602015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb\u0060 and \u00602016/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 323 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6c6e83dea5eabd185868d8c9fa9254c9c60e25cd533bc53c9427b0828178608"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (109 lines \u00D7 4): 2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb:69-177 | 2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb:69-177 | 2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb:69-177 | 2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb:69-177 \u2014 before extracting anything, compare \u00602015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb\u0060 and \u00602016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 214 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac6f944e4c46f289834dd3591df2de61e91d9b782bc996291dffb760ce52089f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (108 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2514.vb:39-146 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2514.vb:39-146 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2514.vb:39-146 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2514.vb:39-146 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2514.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2514.vb\u0060 as WHOLE FILES: 98% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2514.vb:39\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":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2514.vb"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"a782069cf21303e9bc1bc69d6851787b44fba8180837dd9af30b0d3e777a3afc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (103 lines \u00D7 4): 2015/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb:66-168 | 2016/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb:66-168 | 2017/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb:66-168 | 2018/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb:66-168 \u2014 before extracting anything, compare \u00602015/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb\u0060 and \u00602016/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 242 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"633c67e75a9a21394b1ee4cf711102d7737d77c9233a5723462d1f84ca655277"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (104 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb:591-694 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb:591-694 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb:591-694 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb:591-694 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 402 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":591}}}],"partialFingerprints":{"codehealthFindingId/v1":"51d7cac01f43ab08ad774e385d1a812462ec5cd351b8d01f845ddda8c3a05bbc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (101 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:517-617 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:517-617 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:517-617 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:517-617 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 604 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":517}}}],"partialFingerprints":{"codehealthFindingId/v1":"2de01a1eb3c5ee1772bfc2608c22f364be0a882529e903ec932cd3e0fc128630"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (100 lines \u00D7 4): 2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb:69-168 | 2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb:69-168 | 2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb:69-168 | 2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb:69-168 \u2014 before extracting anything, compare \u00602015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb\u0060 and \u00602016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 192 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"10a63f901faefc605aa0af9a34009207930d7a18332b15d4b9e700525298b347"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (95 lines \u00D7 4): 2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:35-129 | 2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:35-129 | 2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:35-129 | 2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:35-129 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb\u0060 and \u00602016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 373 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"6738852b5d9b24d6b93031bb0c7439be160ef3d6ebe23288890747f17bf25539"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (95 lines \u00D7 4): 2015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb:52-146 | 2016/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb:52-146 | 2017/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb:52-146 | 2018/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb:52-146 \u2014 before extracting anything, compare \u00602015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb\u0060 and \u00602016/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"607e50a1e8c81ad93d8cd21f1b6426796972d2c00f225e3bc6b56601edda36d2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (92 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb:738-829 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb:738-829 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb:738-829 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb:738-829 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 402 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":738}}}],"partialFingerprints":{"codehealthFindingId/v1":"b82fd22cbf92b6809a985249dea42b4df4a9f66e694ae415c1fd4a1ca0d4f29f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (92 lines \u00D7 4): 2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb:116-207 | 2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb:116-207 | 2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb:116-207 | 2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb:111-202 \u2014 before extracting anything, compare \u00602015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb\u0060 and \u00602016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 130 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"38198bfcc1891274469b2d3eb9f2a3c5e62dfa2f4388a05b5c5e5a1b3cedefd5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (89 lines \u00D7 4): 2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:343-431 | 2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:343-431 | 2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:343-431 | 2018/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:344-432 \u2014 before extracting anything, compare \u00602015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb\u0060 and \u00602016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 364 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa03d48193791fd28cbd1b36df811f36faf43c4868106f29748a7cf355a8cbc3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (90 lines \u00D7 4): 2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:185-274 | 2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:185-274 | 2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:185-274 | 2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:185-274 \u2014 before extracting anything, compare \u00602015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb\u0060 and \u00602016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 260 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"54d44657f0c4cc2c8702b8790c3efedef7307a594b28b82bb28fe914a1779ea3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (88 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:59-146 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:59-146 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:59-146 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:59-146 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 604 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c57c3a3ba2d82c33576314140ef8c032d7c3584fa1e727380337c08d9a2cd88"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (87 lines \u00D7 4): 2015/Case.Directionality/Case.Directionality/UI/form_Main.vb:131-217 | 2016/Case.Directionality/Case.Directionality/UI/form_Main.vb:131-217 | 2017/Case.Directionality/Case.Directionality/UI/form_Main.vb:131-217 | 2018/Case.Directionality/Case.Directionality/UI/form_Main.vb:131-217 \u2014 before extracting anything, compare \u00602015/Case.Directionality/Case.Directionality/UI/form_Main.vb\u0060 and \u00602016/Case.Directionality/Case.Directionality/UI/form_Main.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/UI/form_Main.vb"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae02186bf11b6bac63ef2e3e4d9044391e352d763a82aea7ba6c36d8ba813a8e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (85 lines \u00D7 4): 2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:240-324 | 2016/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:240-324 | 2017/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:240-324 | 2018/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:236-320 \u2014 before extracting anything, compare \u00602015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs\u0060 and \u00602016/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 264 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:240\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":"2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d4b473664fee2b01746568c6bddc8bebf641facca03a0e89dc813f5af7cfd03"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (85 lines \u00D7 4): 2015/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs:78-162 | 2016/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs:78-162 | 2017/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs:78-162 | 2018/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs:78-162 \u2014 before extracting anything, compare \u00602015/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs\u0060 and \u00602016/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"533856e2690d1ba6caa87682566ba58ffde5553dc7a628193679eebdd99f547b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (86 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:213-298 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:213-298 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:213-298 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:213-298 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 274 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"187df436e4a0cc03e3017111294779cc72c8e3d2fb4a77bf8d777072c9af1f1b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (84 lines \u00D7 4): 2015/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb:100-183 | 2016/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb:100-183 | 2017/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb:100-183 | 2018/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb:100-183 \u2014 before extracting anything, compare \u00602015/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb\u0060 and \u00602016/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 122 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e17fa909b99bec6903f2033b8b6cabe98dec1bad8120cfc95cdf2f432c69a3d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (83 lines \u00D7 4): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:348-430 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:348-430 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:348-430 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:348-430 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 383 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"34b4977545fccd1a602b879fbc833484103cfb18636a31fe0eaa9fc6bbf084e7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (83 lines \u00D7 4): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:431-513 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:431-513 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:431-513 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:431-513 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 685 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":431}}}],"partialFingerprints":{"codehealthFindingId/v1":"3593b1886f6140b8a25217a03bdb2922a5bad238045eee38805094bbbb9f9d3a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (83 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:118-200 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:118-200 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:118-200 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:118-200 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 274 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce9eed57cab4e05bba2f93ff1beb4abe4b95a13ccf15391bd52a1613f116786c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (83 lines \u00D7 4): 2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:334-416 | 2016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:334-416 | 2017/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:335-417 | 2018/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:335-417 \u2014 before extracting anything, compare \u00602015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb\u0060 and \u00602016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 260 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"d28ab1958c42436a6bf94f50ef0c6b52fd992745a0af99496c1d92c650b6d0c5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (82 lines \u00D7 4): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:798-879 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:798-879 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:798-879 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:798-879 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 685 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":798}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffd7f3d2d8fbb4607ae360e1ebb48f606ea34109f61ada52c7ca2ed3011a8bda"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (81 lines \u00D7 4): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:315-395 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:315-395 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:315-395 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:315-395 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 257 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8f8048bb45c5b3d2245391f6a227478fa1a74b198d2ab8973f04d06d4cb5392"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (79 lines \u00D7 4): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:341-419 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:341-419 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:341-419 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:341-419 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 685 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":341}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4fe950cdaac4ca2746e5aaacb2197d2a787a459cf69693aaa567fad5ce7f4e5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (78 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:39-116 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:39-116 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:39-116 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:39-116 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 291 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c299169c2d21c63e68ed6e47c9a13842d29c5c2d9bd64dbbfee99ac5f40abff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (78 lines \u00D7 4): 2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsFamilyType.vb:150-227 | 2016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsFamilyType.vb:150-227 | 2017/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsFamilyType.vb:150-227 | 2018/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsFamilyType.vb:150-227 \u2014 before extracting anything, compare \u00602015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsFamilyType.vb\u0060 and \u00602016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsFamilyType.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsFamilyType.vb"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"c017de2fa9d20aa54feacba246b5fe14bbc47e8586640010119ea2049c77f804"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (78 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb:71-148 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb:71-148 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb:71-148 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb:71-148 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 115 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a0c51a68f76b84b4d061be0567abe920894e63598ffe816c599c9d542c795e8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (76 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:638-713 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:638-713 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:638-713 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:638-713 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 281 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":638}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bb9bbe34af41c2247f9ff0331ecc3e21fc0c1feb608040519132497e219f206"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (76 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:64-139 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:64-139 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:64-139 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:64-139 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 467 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b7279448258710192435e9a8803783ad176dd5e578dc88778317383a697960a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (76 lines \u00D7 4): 2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:303-378 | 2016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:303-378 | 2017/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:303-378 | 2018/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:303-378 \u2014 before extracting anything, compare \u00602015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb\u0060 and \u00602016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 191 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":303}}}],"partialFingerprints":{"codehealthFindingId/v1":"16f1b457d485445d5d05e5a7d0aab82fa545d5e7fccaa0d89625cd176d44f483"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (75 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb:62-136 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb:62-136 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb:62-136 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb:62-136 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"30a7776807ebece6329f91b06215bbeec26d032e1ae01ff042adba27880915ab"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (74 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:390-463 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:390-463 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:390-463 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:389-462 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 317 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":390}}}],"partialFingerprints":{"codehealthFindingId/v1":"57bd0897b68722f2abb2c6a0b895b4732529b00e6024e5e410e5fb11042ec46d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (73 lines \u00D7 4): 2015/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb:130-202 | 2016/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb:130-202 | 2017/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb:130-202 | 2018/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb:130-202 \u2014 before extracting anything, compare \u00602015/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 177 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"5342e0952a5699934c7818fc419d075d9415b93770929e9889c050d2608a4d7d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (71 lines \u00D7 4): 2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:72-142 | 2016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:72-142 | 2017/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:72-142 | 2018/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:72-142 \u2014 before extracting anything, compare \u00602015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb\u0060 and \u00602016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 187 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3147fee993bde88cc25337b8942890797d9ecd0027065a2476bd8b734dbd6f2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (70 lines \u00D7 4): 2015/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb:170-239 | 2016/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb:170-239 | 2017/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb:170-239 | 2018/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb:170-239 \u2014 before extracting anything, compare \u00602015/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb\u0060 and \u00602016/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 242 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9a98a4d43f51b74019ce41561e5f74ae6a3568c43eef71f7351d9dedf4ee93a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (70 lines \u00D7 4): 2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:182-251 | 2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:182-251 | 2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:182-251 | 2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:182-251 \u2014 before extracting anything, compare \u00602015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 149 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbfd003f3658110b869f1711977fd87c31386355d43c800b53728f4fa2c3f774"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (70 lines \u00D7 4): 2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:253-322 | 2016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:253-322 | 2017/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:254-323 | 2018/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:254-323 \u2014 before extracting anything, compare \u00602015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb\u0060 and \u00602016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 260 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d03cbe1d8dbc338403f5a3926b43252a8adb92f21394fd0fb7c8ff391c34e56"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (69 lines \u00D7 4): 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:224-292 | 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:224-292 | 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:224-292 | 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:224-292 \u2014 before extracting anything, compare \u00602015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 and \u00602016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 as WHOLE FILES: this scan already matched 17 separate duplicated blocks between them, totalling at least 421 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"f857b9daa38805d4efc28abad061db0a6eeb282b58c4a47fd0dc93853dbc3592"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (69 lines \u00D7 4): 2015/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb:67-135 | 2016/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb:67-135 | 2017/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb:67-135 | 2018/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb:67-135 \u2014 before extracting anything, compare \u00602015/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb\u0060 and \u00602016/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 155 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. 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":"2015/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4387e9b82bf61249973eb7825d7955e61de2b39e1ffd4aabc92e031400d06f3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (68 lines \u00D7 2): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:335-402 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:335-402 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 267 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":335}}}],"partialFingerprints":{"codehealthFindingId/v1":"0679bed97b6c40fd7bf77e26932b5f0ab4dda82b7e172c05736a0e9c360f4e6b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (68 lines \u00D7 2): 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:335-402 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:335-402 \u2014 before extracting anything, compare \u00602017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 and \u00602018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 267 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":335}}}],"partialFingerprints":{"codehealthFindingId/v1":"003db7a8488433de865c8e8350f18929fe41a3db91b64d2506626144fffa8715"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (67 lines \u00D7 4): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:257-323 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:257-323 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:257-323 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:257-323 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 685 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"a64f71906280502f3218b91b987d0d2fa8654a96a48c268ed5283c214f3c0bef"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (67 lines \u00D7 4): 2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Entry/CmdMain.vb:51-117 | 2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Entry/CmdMain.vb:51-117 | 2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Entry/CmdMain.vb:51-117 | 2018/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Entry/CmdMain.vb:46-112 \u2014 before extracting anything, compare \u00602015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Entry/CmdMain.vb\u0060 and \u00602016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Entry/CmdMain.vb\u0060 as WHOLE FILES: 97% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Entry/CmdMain.vb"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"77972137b44d387100423f3f4d717bc30f1ee70cd06b32b2c908d4ee2d93989f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (66 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:509-574 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:509-574 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:509-574 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:509-574 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 467 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":509}}}],"partialFingerprints":{"codehealthFindingId/v1":"26b990d0bf2570c68860c8ef5a6d1e07ec236095b7cdd94f678c6bf8cddbbea2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (66 lines \u00D7 4): 2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb:31-96 | 2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb:31-96 | 2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb:31-96 | 2018/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb:31-96 \u2014 before extracting anything, compare \u00602015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb\u0060 and \u00602016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 137 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d2125d69517d58263ad49a2b79378569d7b19656f3b40bccaecb6ce37564140"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (65 lines \u00D7 4): 2015/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb:199-263 | 2016/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb:199-263 | 2017/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb:199-263 | 2018/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb:199-263 \u2014 before extracting anything, compare \u00602015/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb\u0060 and \u00602016/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 126 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2b7c32bf2ed9675ffff42c68a9d10411278ca2929118a6ca0bca9c57ae48f35"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (63 lines \u00D7 4): 2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:133-195 | 2016/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:133-195 | 2017/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:133-195 | 2018/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:133-195 \u2014 before extracting anything, compare \u00602015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs\u0060 and \u00602016/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 123 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"badf455a507720c0b784c4debb5b573d79e79fa1819eaaea731856bb6f5492e0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (64 lines \u00D7 4): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:36-99 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:36-99 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:36-99 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:36-99 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 685 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7a2ae13a4db1c2474611f071e3d37b350438d5afd4aae905c1c0c834c67dcc1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (60 lines \u00D7 4): 2015/Case.ApplySysOrient/Data/clsSettings.cs:311-370 | 2016/Case.ApplySysOrient/Data/clsSettings.cs:311-370 | 2017/Case.ApplySysOrient/Data/clsSettings.cs:311-370 | 2018/Case.ApplySysOrient/Data/clsSettings.cs:311-370 \u2014 before extracting anything, compare \u00602015/Case.ApplySysOrient/Data/clsSettings.cs\u0060 and \u00602016/Case.ApplySysOrient/Data/clsSettings.cs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 288 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e78f4e1599d2a8a3de841f93e5e8aa955bb37b1f6b980198340d8cf5355ebd7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (62 lines \u00D7 4): 2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:360-421 | 2016/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:360-421 | 2017/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:360-421 | 2018/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:360-421 \u2014 before extracting anything, compare \u00602015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb\u0060 and \u00602016/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 245 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"fafc61020089c7ed99a37fd79de5c4917c4f9764d3adde8ccbe48448eefa4d60"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (61 lines \u00D7 4): 2015/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb:220-280 | 2016/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb:220-280 | 2017/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb:220-280 | 2018/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb:220-280 \u2014 before extracting anything, compare \u00602015/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 177 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e9c53744368dd8997874f9371d5650038b1eff0db7a0647d1dff2f7f7aa70ea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (61 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:176-236 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:176-236 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:176-236 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:176-236 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 467 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"38359edb050bbf9403cc85ca910ecf10fda8be4a3af67248192d8eb1a613b38a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (60 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:41-100 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:41-100 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:41-100 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:41-100 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 281 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"76d59350ebb4cf432673ed3a448d0f000d33637f5eb7c270b2f742380d7580ce"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (60 lines \u00D7 4): 2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:329-388 | 2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:329-388 | 2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:329-388 | 2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:329-388 \u2014 before extracting anything, compare \u00602015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb\u0060 and \u00602016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 264 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac8255747ff4724a9c25eb4fd275828e3994ac23b33997e1f2320c2b4a312406"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (59 lines \u00D7 4): 2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:428-486 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:428-486 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:428-486 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:428-486 \u2014 before extracting anything, compare \u00602015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb\u0060 and \u00602016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 209 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":428}}}],"partialFingerprints":{"codehealthFindingId/v1":"f178fcfa9ce2a718a721f5358935b85a7776d3d867a4c79adf3bdb0b2004f7b1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (59 lines \u00D7 4): 2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:497-555 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:497-555 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:497-555 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:497-555 \u2014 before extracting anything, compare \u00602015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb\u0060 and \u00602016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 209 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":497}}}],"partialFingerprints":{"codehealthFindingId/v1":"e67e1519470ed10cc39fe9c8adf4b7307126db6498e4825296091b4705665a34"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (57 lines \u00D7 4): 2015/Case.ApplySysOrient/Data/clsSettings.cs:123-179 | 2016/Case.ApplySysOrient/Data/clsSettings.cs:123-179 | 2017/Case.ApplySysOrient/Data/clsSettings.cs:123-179 | 2018/Case.ApplySysOrient/Data/clsSettings.cs:123-179 \u2014 before extracting anything, compare \u00602015/Case.ApplySysOrient/Data/clsSettings.cs\u0060 and \u00602016/Case.ApplySysOrient/Data/clsSettings.cs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 288 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cad92859bd2644f6f7e49d601cc24296a32a141937423dd5e5c5679e8fa167c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (59 lines \u00D7 4): 2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Entry/CmdMain.vb:38-96 | 2016/Case.ModeledRoomTags/Case.ModeledRoomTags/Entry/CmdMain.vb:38-96 | 2017/Case.ModeledRoomTags/Case.ModeledRoomTags/Entry/CmdMain.vb:38-96 | 2018/Case.ModeledRoomTags/Case.ModeledRoomTags/Entry/CmdMain.vb:38-96 \u2014 before extracting anything, compare \u00602015/Case.ModeledRoomTags/Case.ModeledRoomTags/Entry/CmdMain.vb\u0060 and \u00602016/Case.ModeledRoomTags/Case.ModeledRoomTags/Entry/CmdMain.vb\u0060 as WHOLE FILES: 97% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.ModeledRoomTags/Case.ModeledRoomTags/Entry/CmdMain.vb:38\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":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Entry/CmdMain.vb"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"8316ca86421252e2280b9fafc2f5317e21257adb7f3eb4a347aca4bb946a8c0b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (59 lines \u00D7 4): 2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:245-303 | 2016/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:245-303 | 2017/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:245-303 | 2018/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:245-303 \u2014 before extracting anything, compare \u00602015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb\u0060 and \u00602016/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 245 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"98a216039db1166d248a2cd0780339e5863afdf3956e9a9b62d1919f17935d5b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (58 lines \u00D7 4): 2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb:188-245 | 2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb:188-245 | 2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb:188-245 | 2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb:188-245 \u2014 before extracting anything, compare \u00602015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb\u0060 and \u00602016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 214 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"de9438fb25ee239264e33a1f409e03bf246619cff7183b76e41881adeca588dd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (56 lines \u00D7 4): 2015/Case.ApplySysOrient/Data/clsSettings.cs:187-242 | 2016/Case.ApplySysOrient/Data/clsSettings.cs:187-242 | 2017/Case.ApplySysOrient/Data/clsSettings.cs:187-242 | 2018/Case.ApplySysOrient/Data/clsSettings.cs:187-242 \u2014 before extracting anything, compare \u00602015/Case.ApplySysOrient/Data/clsSettings.cs\u0060 and \u00602016/Case.ApplySysOrient/Data/clsSettings.cs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 288 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a932ec3067b09146576c2ccded0deec9a05b80f999f10882d4e5071157a3f38"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (58 lines \u00D7 4): 2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb:144-201 | 2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb:144-201 | 2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb:144-201 | 2018/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb:144-201 \u2014 before extracting anything, compare \u00602015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb\u0060 and \u00602016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 131 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"00597ef15499099c0ac16780d26050e5be44538ad5a3cd3b85f94d705858cb9b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (58 lines \u00D7 4): 2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:286-343 | 2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:286-343 | 2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:286-343 | 2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:286-343 \u2014 before extracting anything, compare \u00602015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb\u0060 and \u00602016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 260 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"072328ef9f35501d5a1128b513b8286612a42ea353d560b20ae481651d2301a9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (58 lines \u00D7 4): 2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb:179-236 | 2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb:179-236 | 2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb:179-236 | 2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb:179-236 \u2014 before extracting anything, compare \u00602015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb\u0060 and \u00602016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 192 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c3e20cf9818208daae91d05f8a8d10b8d30eb1ebed71298e0769b5d9a541d66"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (57 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb:124-180 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb:124-180 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb:124-180 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb:124-180 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 110 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffaad23b373f9f64de2874ff5e664726c329b284ff1e1871efde66844e74f584"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (57 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:440-496 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:440-496 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:440-496 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:440-496 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 467 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":440}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f40425775f3654838a259c38da107290a423c01c520cc0071b7261d62bacaca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (55 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:327-381 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:327-381 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:327-381 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:327-381 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 422 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"65ec96e70f19196c619a7f3306a4599e88686849fb5438a3bf0174aaea1a4dce"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (54 lines \u00D7 4): 2015/Case.ApplySysOrient/Data/clsSettings.cs:250-303 | 2016/Case.ApplySysOrient/Data/clsSettings.cs:250-303 | 2017/Case.ApplySysOrient/Data/clsSettings.cs:250-303 | 2018/Case.ApplySysOrient/Data/clsSettings.cs:250-303 \u2014 before extracting anything, compare \u00602015/Case.ApplySysOrient/Data/clsSettings.cs\u0060 and \u00602016/Case.ApplySysOrient/Data/clsSettings.cs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 288 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4e46372e79d32f3749553cdb5b1149b04a9ca29053dc025edc2b1b242bac7ba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (55 lines \u00D7 4): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:249-303 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:249-303 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:249-303 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:249-303 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 257 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1cbe43a02522f05411f5be9c75bffea0b90f832079c6703b91ae554395d3c2f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (55 lines \u00D7 4): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:569-623 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:569-623 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:569-623 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:569-623 \u2014 before extracting anything, compare \u00602015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb\u0060 and \u00602016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 500 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":569}}}],"partialFingerprints":{"codehealthFindingId/v1":"811245eb36ed97df25d64e0392deab3d5ed6af855e92d8e934c6fff69925fd33"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (54 lines \u00D7 4): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:733-786 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:733-786 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:733-786 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:733-786 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 685 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":733}}}],"partialFingerprints":{"codehealthFindingId/v1":"8524ae896106ea8519a70e65ae50fdc4595ecbb8577927792992d49ac886b818"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (54 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:116-169 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:116-169 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:116-169 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:116-169 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 169 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"3efd7649bce9a2047beac95aa6ae1a6f6577c79ebf406b0b19afb2289bb09eb1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (52 lines \u00D7 4): 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:65-116 | 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:65-116 | 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:65-116 | 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:65-116 \u2014 before extracting anything, compare \u00602015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 and \u00602016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 as WHOLE FILES: this scan already matched 17 separate duplicated blocks between them, totalling at least 421 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"92bd795fce4097290c915e0d161a725286558ffee846c1e06d2b99eae7fa56d3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (53 lines \u00D7 4): 2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:456-508 | 2016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:456-508 | 2017/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:456-508 | 2018/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:456-508 \u2014 before extracting anything, compare \u00602015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb\u0060 and \u00602016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 215 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":456}}}],"partialFingerprints":{"codehealthFindingId/v1":"74a64e0c1db1bee3780f8f2a0c017a8bd61b04ada3b602b6df880119e2dce4bb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (53 lines \u00D7 4): 2015/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs:114-166 | 2016/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs:114-166 | 2017/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs:114-166 | 2018/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs:114-166 \u2014 before extracting anything, compare \u00602015/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs\u0060 and \u00602016/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs:114\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef27c1b5176ee21b86fcacbbb235167c73bab8179bc39c4277640282b0c65c8b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (52 lines \u00D7 4): 2015/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs:38-89 | 2016/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs:38-89 | 2017/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs:38-89 | 2018/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs:38-89 \u2014 before extracting anything, compare \u00602015/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs\u0060 and \u00602016/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a4491d2de3eb8a8afe6270765afe670c33400af3231338e8b249b32fb2fa12c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (52 lines \u00D7 4): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb:90-141 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb:90-141 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb:90-141 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb:90-141 \u2014 before extracting anything, compare \u00602015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 97 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf3b6fda8c05d573da1402acc8d3f164997c0955d1a32940fade50f9a97b2645"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (52 lines \u00D7 4): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:195-246 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:195-246 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:195-246 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:195-246 \u2014 before extracting anything, compare \u00602015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb\u0060 and \u00602016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 323 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"60d4f1bf75d3732b9c0712ac866d4a33790d308eed84b0c133d596836fd05470"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (52 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:642-693 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:642-693 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:642-693 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:642-693 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 467 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":642}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad9e8c06a80c500512f83e81cc3a8ab2c978572a2e790eb6454e5e6d99eb2151"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (52 lines \u00D7 4): 2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:366-417 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:366-417 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:366-417 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:366-417 \u2014 before extracting anything, compare \u00602015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb\u0060 and \u00602016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 209 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":366}}}],"partialFingerprints":{"codehealthFindingId/v1":"021e8202f3c4777c488ef82fb2421b2fcc12a8ab3c01a04674f153e20a31c32b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (52 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:143-194 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:143-194 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:143-194 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:143-194 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 267 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"07c6c21c9abd2449aa47a3e9ba9673527818e3d6c86d7f05a6ec963e8ee34427"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (52 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:53-104 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:53-104 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:53-104 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:53-104 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 169 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"0316e265dead31e1fcc86ce29fb9a2276aafd899c7237755696edd3635ad32e0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (52 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:412-463 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:412-463 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:412-463 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:412-463 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 175 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":412}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf4f99f9d208365118970e2ff0e8a8414c5edeb5edbd6e63fd1b9a26654da4b8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (52 lines \u00D7 4): 2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:216-267 | 2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:216-267 | 2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:216-267 | 2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:216-267 \u2014 before extracting anything, compare \u00602015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb\u0060 and \u00602016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 215 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"11ff8cb8ecd3905943144b67d0f24fed38be626f2d8353891969ec02fc402699"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (51 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb:93-143 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb:93-143 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb:93-143 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb:93-143 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbbe414f2cd605f1c140e70965928eea5ee6f936ff0bc7b02a1abcfda44fcbfb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (51 lines \u00D7 4): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:38-88 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:38-88 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:38-88 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:38-88 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 383 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"32e2a921cf58e5ef3f784dbcae6d3b7a87fce13ab0420a803837fc339dc8fd55"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (51 lines \u00D7 4): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:243-293 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:243-293 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:243-293 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:243-293 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 299 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c65d59d69dfe0e284e81030627f754f07577bfd965e507cd86515f408428c63"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (51 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb:78-128 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb:78-128 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb:78-128 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb:78-128 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa9bf1a7e7bb817082f487925482461d5408154f939b1419a2a77bf376ebdb8d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (51 lines \u00D7 4): 2015/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs:142-192 | 2016/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs:140-190 | 2017/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs:140-190 | 2018/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs:135-185 \u2014 before extracting anything, compare \u00602015/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs\u0060 and \u00602016/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 123 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs:142\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"9723b1953a9be03fa7d4d74fea88c3242b5f6750d9369b06c24cb1734b15039e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (50 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:265-314 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:265-314 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:265-314 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:265-314 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 610 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"9537a24857c3da113ce67fe6ca9df54e45ae60600dd0039ddb1e5cf2007430a5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (49 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:655-703 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:655-703 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:655-703 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:655-703 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 291 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":655}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8a5f339eb34774f5c346c75fd349c30dbad92906ba02f4c6aaf8cddfa2987c9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (50 lines \u00D7 4): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:190-239 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:190-239 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:190-239 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:190-239 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 685 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"218e778bb54a47c12719e056e9d470a907b3ef7994f3807dade8dc0153a9aa11"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (50 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:258-307 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:258-307 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:258-307 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:258-307 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 217 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"bca0100b7d338e692c6626470bf83b1e8259b3b1af69e2ca445f8cab72780830"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 3): 2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:102-126 | 2016/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:102-126 | 2017/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:102-126 \u2014 before extracting anything, compare \u00602015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs\u0060 and \u00602016/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 264 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:102\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":"2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"25a1aeac916d7eea93155cc1a69fa02fcf6cf35ca3dfe4dc10fad45dbded33e7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (49 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:774-822 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:774-822 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:774-822 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:774-822 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 281 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":774}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6efbb4e39e76a4a45056a43a10cd2c9410bb5259017f8a3c65a0a03cc773152"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (49 lines \u00D7 4): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:189-237 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:189-237 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:189-237 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:189-237 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 257 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"8842f3e7448486616a76570f8589ce4c4eb2b240854f63c9dc779ef4996dc9a9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (49 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:453-501 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:453-501 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:453-501 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:453-501 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 247 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"87759a318254d05b96292df1ca27ee3a7dc6aae7a71591cddd98f740560be201"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (49 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:47-95 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:47-95 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:47-95 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:47-95 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 274 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"68e9a60562b6f67f012cf10bfc31712466f6794549f076d3f481d99fed2ff149"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (49 lines \u00D7 4): 2015/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb:149-197 | 2016/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb:149-197 | 2017/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb:149-197 | 2018/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb:149-197 \u2014 before extracting anything, compare \u00602015/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb\u0060 and \u00602016/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 155 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"819cf4f955bd5ee37b5772113b31552259ad1bff122efa6495d3a031864f0901"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (49 lines \u00D7 4): 2015/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:29-77 | 2016/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:29-77 | 2017/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:29-77 | 2018/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:29-77 \u2014 before extracting anything, compare \u00602015/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb\u0060 and \u00602016/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 150 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7471280f952a698d2e198b262bbf080f4ca3ce85c55d3aa2f1a25fd9bcb4b31"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (49 lines \u00D7 4): 2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:411-459 | 2016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:411-459 | 2017/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:411-459 | 2018/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:411-459 \u2014 before extracting anything, compare \u00602015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb\u0060 and \u00602016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 191 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c8a6c7e7dd8a2e1a4ecb9dc1ccb139128f3f5890e147ecd290e0e6d8dc07845"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (49 lines \u00D7 4): 2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb:232-280 | 2016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb:232-280 | 2017/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb:232-280 | 2018/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb:232-280 \u2014 before extracting anything, compare \u00602015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb\u0060 and \u00602016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 106 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc4049df1fe4d78526f43b185947b569ed7138c485e1d113b44aa0f4e099224d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (48 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:644-691 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:644-691 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:644-691 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:644-691 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 610 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":644}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdabc4f78edf35e7c24682d1b5fa43d84d546cebadc4ac9baa88c7d987fb5ab2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (48 lines \u00D7 4): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:304-351 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:304-351 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:304-351 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:304-351 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 299 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb"},"region":{"startLine":304}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0af46d2d7d0299a1dbc24e41900368eb39030c4804b087ca5d7ad4ce0312ffd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (48 lines \u00D7 4): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:228-275 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:228-275 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:228-275 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:228-275 \u2014 before extracting anything, compare \u00602015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 172 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"c642a9df4f96ce12645da2a7ac97b613dc64d6614641bfe82b59acab72bdb53d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (48 lines \u00D7 4): 2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:158-205 | 2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:158-205 | 2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:158-205 | 2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:158-205 \u2014 before extracting anything, compare \u00602015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb\u0060 and \u00602016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 215 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"3176e8228bfa143523ac3019d420ed2bcc8bc3be7bfa97dd976b82edd78308dc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (47 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb:141-187 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb:141-187 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb:141-187 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb:141-187 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0edff43c9b3c84a4182eb9d08da6d20b4829868aac2e7bbce704d4df9058bd5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (47 lines \u00D7 4): 2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:122-168 | 2016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:122-168 | 2017/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:123-169 | 2018/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:123-169 \u2014 before extracting anything, compare \u00602015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb\u0060 and \u00602016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 260 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0e1be51763ac38397783a29552145fdea32f4b0bd011589bfb78d5cbebf5b98"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (46 lines \u00D7 4): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Entry/AF73BA45B4B94C7585CB3E425D423F5E.vb:49-94 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Entry/AF73BA45B4B94C7585CB3E425D423F5E.vb:49-94 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Entry/AF73BA45B4B94C7585CB3E425D423F5E.vb:49-94 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Entry/AF73BA45B4B94C7585CB3E425D423F5E.vb:49-94 \u2014 before extracting anything, compare \u00602015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Entry/AF73BA45B4B94C7585CB3E425D423F5E.vb\u0060 and \u00602016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Entry/AF73BA45B4B94C7585CB3E425D423F5E.vb\u0060 as WHOLE FILES: 97% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Entry/AF73BA45B4B94C7585CB3E425D423F5E.vb:49\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Entry/AF73BA45B4B94C7585CB3E425D423F5E.vb"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c796078b70bcb7a34ee78867ae2b80851ebc8456111cfde5ef053529a54bf7b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (46 lines \u00D7 4): 2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:174-219 | 2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:174-219 | 2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:174-219 | 2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:174-219 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb\u0060 and \u00602016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 373 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"139084fcd40edadd991da4e1591b82b50d931c0cc2e4cf46b0bc6707b979dcfd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (45 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:412-456 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:412-456 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:412-456 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:412-456 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 149 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":412}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd78c13cf20e565b67204778082ae3fd7949a5cb17c956008b2fb0ccc76f3d74"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (45 lines \u00D7 4): 2015/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:89-133 | 2016/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:89-133 | 2017/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:89-133 | 2018/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:89-133 \u2014 before extracting anything, compare \u00602015/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb\u0060 and \u00602016/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 150 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"10637ce8bfce6decf4a7da81eb2eda7d247d0d73d837ee0aca71c8632f2f67c0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (45 lines \u00D7 4): 2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb:124-168 | 2016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb:124-168 | 2017/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb:124-168 | 2018/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb:124-168 \u2014 before extracting anything, compare \u00602015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb\u0060 and \u00602016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 114 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"32a48840e3fa2185d303b9e979283fb672fa33aeaeff879d117d6462a14bbf2d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (45 lines \u00D7 4): 2015/Case.RevClouds/Case.RevClouds/Data/clsRevcloud.vb:118-162 | 2016/Case.RevClouds/Case.RevClouds/Data/clsRevcloud.vb:118-162 | 2017/Case.RevClouds/Case.RevClouds/Data/clsRevcloud.vb:118-162 | 2018/Case.RevClouds/Case.RevClouds/Data/clsRevcloud.vb:118-162 \u2014 before extracting anything, compare \u00602015/Case.RevClouds/Case.RevClouds/Data/clsRevcloud.vb\u0060 and \u00602016/Case.RevClouds/Case.RevClouds/Data/clsRevcloud.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RevClouds/Case.RevClouds/Data/clsRevcloud.vb"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ec66831fd360de8f7656c0350f924cd6c43275e23e425ef9e82bfa46d975b8e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (44 lines \u00D7 4): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:54-97 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:54-97 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:54-97 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:54-97 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 257 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"3627847c382e79a18fc8aab783c338b2f762bb4f25c17be59d2083155c440b7a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (44 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:380-423 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:380-423 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:380-423 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:380-423 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 467 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":380}}}],"partialFingerprints":{"codehealthFindingId/v1":"d433e89eada1fc76c60536f08a64e1f3115202fa022deaa8541ed03bd3f26305"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (44 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:628-671 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:628-671 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:628-671 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:628-671 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 604 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":628}}}],"partialFingerprints":{"codehealthFindingId/v1":"f703f62109d07ec1a2ee148883f9da5ad1dafae7da037e906e334e2004dd5a79"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (43 lines \u00D7 4): 2015/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs:68-110 | 2016/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs:68-110 | 2017/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs:68-110 | 2018/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs:63-105 \u2014 before extracting anything, compare \u00602015/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs\u0060 and \u00602016/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 123 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs:68\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":"2015/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d042c62c1dd53300cbb3bfb548a1fb0df218ad718a2838fb9a2d2462c57fb09"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (43 lines \u00D7 8): 2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:591-633 | 2015/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb:199-241 | 2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:591-633 | 2016/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb:199-241 | 2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:591-633 | 2017/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb:199-241 | 2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:591-633 | 2018/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb:199-241 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb\u0060 and \u00602015/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 62 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":591}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa1ce469c2d6615617eff407029081ee869ad4f519da2376ee120b6ab2daa330"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (43 lines \u00D7 4): 2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:339-381 | 2016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:339-381 | 2017/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:339-381 | 2018/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:339-381 \u2014 before extracting anything, compare \u00602015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb\u0060 and \u00602016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 187 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:339\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":"2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"10b867f85b2343d4a84757d418437ec0e7de19f60e7262a467d5993bfbcf1d67"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (43 lines \u00D7 4): 2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:184-226 | 2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:184-226 | 2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:184-226 | 2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:184-226 \u2014 before extracting anything, compare \u00602015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb\u0060 and \u00602016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 201 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"27b522bbe72d6922db6ef4bfdad13218ae8c44eaf5be4f9d928430f3e5208249"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (43 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:219-261 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:219-261 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:219-261 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:219-261 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 149 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d9c46e6d70655d4e4b5151c4e5345437a753525606d35dae4eb622e873c9d42"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (43 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:96-138 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:96-138 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:96-138 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:96-138 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 175 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3cd977287986653159fbdf2c756393cbd09cfd6621ba46ac9c8696d71d36788"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (43 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:152-194 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:152-194 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:152-194 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:152-194 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 175 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"94c94466878ecb4ccf1722a3b5733251abf12ad9d3cea79f7972753790990b1d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (43 lines \u00D7 4): 2015/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb:97-139 | 2016/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb:97-139 | 2017/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb:97-139 | 2018/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb:92-134 \u2014 before extracting anything, compare \u00602015/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb\u0060 and \u00602016/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1d9d2d8582fbbd9adef4d3dc3be8495b23d46e68ff185fe497e21b3ba028960"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (43 lines \u00D7 4): 2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:372-414 | 2016/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:372-414 | 2017/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:372-414 | 2018/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:368-410 \u2014 before extracting anything, compare \u00602015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs\u0060 and \u00602016/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 264 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:372\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":"2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"8071222be10757e1b86e538f143296fcba17e0d74624fcbe0067bdfa6ad1cae3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (42 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:189-230 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:189-230 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:189-230 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:189-230 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 109 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc297805e25ee1f22bf896669258fbc64955d9b2246d54a4c451528b48a8911a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (42 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:967-1008 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:967-1008 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:967-1008 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:967-1008 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 610 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:967\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":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":967}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a64a5e946c2a553d1ee68ac9da7ef4a8e2ba2c6757bbfea149333d9f3de61f2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (42 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:422-463 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:422-463 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:422-463 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:422-463 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 422 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":422}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8c3113f169492cf5e250ce039e0c8b75a13ecdf6ee33215233b9ecce4dfb5f7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (42 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:509-550 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:509-550 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:509-550 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:509-550 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 291 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":509}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5c1568d9d6af4cfb5da7c4d18b4f0849f3f48e105999167039384977ddcd1ef"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (42 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:506-547 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:506-547 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:506-547 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:506-547 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 217 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":506}}}],"partialFingerprints":{"codehealthFindingId/v1":"500b30840cd5c6f6300e366ed12f77c43d6f42ee78772431030ac3a317e3bdad"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (42 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb:76-117 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb:76-117 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb:76-117 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb:76-117 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 100 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb:76\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":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"c30ffc2c001c2576480983abc4da8159667141d51e8c5b1a5ce36d6393a0f20d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (42 lines \u00D7 4): 2015/Case.SharedParameters/Case.SharedParameters/Data/clsSharedParameters.vb:132-173 | 2016/Case.SharedParameters/Case.SharedParameters/Data/clsSharedParameters.vb:132-173 | 2017/Case.SharedParameters/Case.SharedParameters/Data/clsSharedParameters.vb:132-173 | 2018/Case.SharedParameters/Case.SharedParameters/Data/clsSharedParameters.vb:132-173 \u2014 before extracting anything, compare \u00602015/Case.SharedParameters/Case.SharedParameters/Data/clsSharedParameters.vb\u0060 and \u00602016/Case.SharedParameters/Case.SharedParameters/Data/clsSharedParameters.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"548e0f26c886ebd194d58589311155106b8355df83b09545af9445172292967c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (41 lines \u00D7 4): 2015/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs:134-174 | 2016/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs:134-174 | 2017/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs:134-174 | 2018/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs:134-174 \u2014 before extracting anything, compare \u00602015/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs\u0060 and \u00602016/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 98 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"799c72c43a7a11c4d703bd3df254d30a6038e26f1f76de86d6440b8104f3a0e7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (41 lines \u00D7 4): 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:567-607 | 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:567-607 | 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:567-607 | 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:567-607 \u2014 before extracting anything, compare \u00602015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 and \u00602016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 as WHOLE FILES: this scan already matched 17 separate duplicated blocks between them, totalling at least 421 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":567}}}],"partialFingerprints":{"codehealthFindingId/v1":"060c7d7a6388035e4b88d759f154cb3fe9a5a8d897bb5acd086557a4f7755cca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (42 lines \u00D7 4): 2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:123-164 | 2016/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:123-164 | 2017/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:123-164 | 2018/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:123-164 \u2014 before extracting anything, compare \u00602015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb\u0060 and \u00602016/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 245 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a047de36ced32c82d4d647590ce52e054db788f4616b3870141d8b467a5e3b6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (41 lines \u00D7 4): 2015/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:27-67 | 2016/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:27-67 | 2017/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:27-67 | 2018/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:27-67 \u2014 before extracting anything, compare \u00602015/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb\u0060 and \u00602016/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 252 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e8e991819f1448898c558fde81f6b79cb7a2c35655edac05d63d470f0298915"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (39 lines \u00D7 4): 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:411-449 | 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:411-449 | 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:411-449 | 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:411-449 \u2014 before extracting anything, compare \u00602015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 and \u00602016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 as WHOLE FILES: this scan already matched 17 separate duplicated blocks between them, totalling at least 421 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:411\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":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"af8292e26ad7db1e03b9d09b2b55b8ebbd770dade459dfbbaeacc0493dd7bd41"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (40 lines \u00D7 4): 2015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:52-91 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:52-91 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:52-91 | 2018/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:52-91 \u2014 before extracting anything, compare \u00602015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs\u0060 and \u00602016/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 147 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c7de6839a25fe6783b4b1b7e5fd3ef52b42e847a5b6d4684a72ac5dfb0c9729"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (41 lines \u00D7 4): 2015/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb:138-178 | 2016/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb:138-178 | 2017/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb:138-178 | 2018/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb:138-178 \u2014 before extracting anything, compare \u00602015/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb\u0060 and \u00602016/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 106 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"d72e169af5a7e6c6556c6f07afd61bc7915cd1a1bce04dca2787fc2d353951dd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (41 lines \u00D7 4): 2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Modules/LogData.vb:20-60 | 2016/Case.FreeBenchmarking/Case.FreeBenchmarking/Modules/LogData.vb:20-60 | 2017/Case.FreeBenchmarking/Case.FreeBenchmarking/Modules/LogData.vb:20-60 | 2018/Case.FreeBenchmarking/Case.FreeBenchmarking/Modules/LogData.vb:20-60 \u2014 before extracting anything, compare \u00602015/Case.FreeBenchmarking/Case.FreeBenchmarking/Modules/LogData.vb\u0060 and \u00602016/Case.FreeBenchmarking/Case.FreeBenchmarking/Modules/LogData.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Modules/LogData.vb"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"41809a4de15c15d6dac67a6de18adc8cb740d1a88d80b0d1b524e97ff8e2a8fd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (38 lines \u00D7 8): 2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:301-338 | 2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:387-424 | 2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:301-338 | 2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:387-424 | 2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:301-338 | 2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:387-424 | 2018/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:301-338 | 2018/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:387-424 \u2014 before extracting anything, compare \u00602015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb\u0060 and \u00602016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 95 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ac817333c5b8000b618d48342d44fc4259512cab8e756c1fc59cea0a87fa1b4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (37 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:319-355 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:319-355 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:319-355 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:319-355 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 267 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"91334a98ca915b51d8363d039c9504e155756106cbde1213934770fbb703cf75"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (40 lines \u00D7 4): 2015/Case.RevClouds/Case.RevClouds/Data/clsSettings.vb:80-119 | 2016/Case.RevClouds/Case.RevClouds/Data/clsSettings.vb:80-119 | 2017/Case.RevClouds/Case.RevClouds/Data/clsSettings.vb:80-119 | 2018/Case.RevClouds/Case.RevClouds/Data/clsSettings.vb:80-119 \u2014 before extracting anything, compare \u00602015/Case.RevClouds/Case.RevClouds/Data/clsSettings.vb\u0060 and \u00602016/Case.RevClouds/Case.RevClouds/Data/clsSettings.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RevClouds/Case.RevClouds/Data/clsSettings.vb"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"15e9a9d17536cef3bfe129fdcc385e88d4f59f087d90d7678f807730301ed39b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (39 lines \u00D7 4): 2015/Case.ParallelWalls/Case.ParallelWalls/Entry/CmdMain.cs:35-73 | 2016/Case.ParallelWalls/Case.ParallelWalls/Entry/CmdMain.cs:35-73 | 2017/Case.ParallelWalls/Case.ParallelWalls/Entry/CmdMain.cs:35-73 | 2018/Case.ParallelWalls/Case.ParallelWalls/Entry/CmdMain.cs:35-73 \u2014 before extracting anything, compare \u00602015/Case.ParallelWalls/Case.ParallelWalls/Entry/CmdMain.cs\u0060 and \u00602016/Case.ParallelWalls/Case.ParallelWalls/Entry/CmdMain.cs\u0060 as WHOLE FILES: 95% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.ParallelWalls/Case.ParallelWalls/Entry/CmdMain.cs:35\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ParallelWalls/Case.ParallelWalls/Entry/CmdMain.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"3333485674d0ce091e9b79d71cd9cdfdf5be5e7051998a5c407fdd2a4a974e0f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (40 lines \u00D7 3): 2015/Case.LightingLayout/Case.LightingLayout/Entry/CmdMain.vb:55-94 | 2016/Case.LightingLayout/Case.LightingLayout/Entry/CmdMain.vb:55-94 | 2017/Case.LightingLayout/Case.LightingLayout/Entry/CmdMain.vb:55-94 \u2014 before extracting anything, compare \u00602015/Case.LightingLayout/Case.LightingLayout/Entry/CmdMain.vb\u0060 and \u00602016/Case.LightingLayout/Case.LightingLayout/Entry/CmdMain.vb\u0060 as WHOLE FILES: 97% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.LightingLayout/Case.LightingLayout/Entry/CmdMain.vb:55\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":"2015/Case.LightingLayout/Case.LightingLayout/Entry/CmdMain.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"c48446fcea33b996d81eb971323068fcd84d4a80078d7a8f05b93997989e64c9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (39 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb:161-199 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb:161-199 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb:161-199 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb:161-199 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"64868ba25da8415f4702ffc44a9d3d8ad198bc886da43c226c654f94822d3b30"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (39 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb:207-245 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb:207-245 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb:207-245 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb:207-245 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"d068b188fbb584a4fe0afb23d27f7c7ed1d55787ed165c9f1734d221219c454c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (38 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb:68-105 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb:68-105 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb:68-105 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb:68-105 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 113 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef7d43b877d8308b34a46661d6f143870f60c75d2067d3cf0fa1f999c722db80"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (39 lines \u00D7 4): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:205-243 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:205-243 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:205-243 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:205-243 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 383 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f77207e3b09ee968025db23607815c593a26b7a61568caaf1002e676c795f6d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (39 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:591-629 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:591-629 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:591-629 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:591-629 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 467 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":591}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbb1dcd0c32fe34629b32437db73c1a548a8da2f20e138deec29d6f8680c38ce"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (39 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:146-184 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:146-184 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:146-184 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:146-184 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 330 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"b436bf4e1acd06166c3b3f275b566d063f62d0b4be52cdd9338b85fb6a09d70d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (38 lines \u00D7 4): 2015/Case.ApplySysOrient/Entry/CmdMain.cs:38-75 | 2016/Case.ApplySysOrient/Entry/CmdMain.cs:38-75 | 2017/Case.ApplySysOrient/Entry/CmdMain.cs:38-75 | 2018/Case.ApplySysOrient/Entry/CmdMain.cs:38-75 \u2014 before extracting anything, compare \u00602015/Case.ApplySysOrient/Entry/CmdMain.cs\u0060 and \u00602016/Case.ApplySysOrient/Entry/CmdMain.cs\u0060 as WHOLE FILES: 95% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.ApplySysOrient/Entry/CmdMain.cs:38\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Entry/CmdMain.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b19bb36a9e48fb69e8bd3861e41dedfccf1e55f13f27e2e6e7ab04663bcf60d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (39 lines \u00D7 4): 2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb:93-131 | 2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb:93-131 | 2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb:93-131 | 2018/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb:93-131 \u2014 before extracting anything, compare \u00602015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb\u0060 and \u00602016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 131 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"7dfaa4e3c41a897a2d4625ed24191848227d0494ed689ab24f9ee71ae4caa9ca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (37 lines \u00D7 4): 2015/Case.Navis2BCF/Case.Navis2BCF/CASERibbon.cs:82-118 | 2016/Case.Navis2BCF/Case.Navis2BCF/CASERibbon.cs:82-118 | 2017/Case.Navis2BCF/Case.Navis2BCF/CASERibbon.cs:82-118 | 2018/Case.Navis2BCF/Case.Navis2BCF/CASERibbon.cs:82-118 \u2014 before extracting anything, compare \u00602015/Case.Navis2BCF/Case.Navis2BCF/CASERibbon.cs\u0060 and \u00602016/Case.Navis2BCF/Case.Navis2BCF/CASERibbon.cs\u0060 as WHOLE FILES: 95% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/CASERibbon.cs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"18aa410f72b0a6e491aa17aeaec9e5970d40cdb45df2c9fc52f8f8051ed49a10"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (38 lines \u00D7 4): 2015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:197-234 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:197-234 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:197-234 | 2018/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:197-234 \u2014 before extracting anything, compare \u00602015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs\u0060 and \u00602016/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 147 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"f81305457a456e3e1d81b0198204dd78e8499b5ffa2e8a512bc3f3772ac2968f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (38 lines \u00D7 4): 2015/Case.UngroupAll/Case.UngroupAll/Entry/CmdMain.cs:37-74 | 2016/Case.UngroupAll/Case.UngroupAll/Entry/CmdMain.cs:37-74 | 2017/Case.UngroupAll/Case.UngroupAll/Entry/CmdMain.cs:37-74 | 2018/Case.UngroupAll/Case.UngroupAll/Entry/CmdMain.cs:37-74 \u2014 before extracting anything, compare \u00602015/Case.UngroupAll/Case.UngroupAll/Entry/CmdMain.cs\u0060 and \u00602016/Case.UngroupAll/Case.UngroupAll/Entry/CmdMain.cs\u0060 as WHOLE FILES: 95% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.UngroupAll/Case.UngroupAll/Entry/CmdMain.cs:37\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.UngroupAll/Case.UngroupAll/Entry/CmdMain.cs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"d76557d7d2ae304e4d308a956a0b51f8f855b4fabbd2bc5e26a0164c9653e4fb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (34\u201339 lines \u00D7 3): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Entry/B31EA3F20509489BB52A0381E8838AFC.vb:30-68 | 2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Entry/A330EB8E54CA46B3A28E41DA9E77F9F6.vb:25-58 | 2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Entry/BC456E773F0B4A04A764DE16ECDA69C9.vb:25-60 \u2014 before extracting anything, compare \u00602015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Entry/B31EA3F20509489BB52A0381E8838AFC.vb\u0060 and \u00602015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Entry/A330EB8E54CA46B3A28E41DA9E77F9F6.vb\u0060 as WHOLE FILES: 91% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Entry/B31EA3F20509489BB52A0381E8838AFC.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"13b05fac2eb95ebe61a9400c045e03495077223009b7a6a629bf435aa058e678"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (34\u201339 lines \u00D7 3): 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Entry/B31EA3F20509489BB52A0381E8838AFC.vb:30-68 | 2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Entry/A330EB8E54CA46B3A28E41DA9E77F9F6.vb:25-58 | 2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Entry/BC456E773F0B4A04A764DE16ECDA69C9.vb:25-60 \u2014 before extracting anything, compare \u00602016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Entry/B31EA3F20509489BB52A0381E8838AFC.vb\u0060 and \u00602016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Entry/A330EB8E54CA46B3A28E41DA9E77F9F6.vb\u0060 as WHOLE FILES: 91% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Entry/B31EA3F20509489BB52A0381E8838AFC.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"81e26471e8b14be9b311397a382d422f6168457c23806fa17f128acf694d07a7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (34\u201339 lines \u00D7 3): 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Entry/B31EA3F20509489BB52A0381E8838AFC.vb:30-68 | 2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Entry/A330EB8E54CA46B3A28E41DA9E77F9F6.vb:25-58 | 2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Entry/BC456E773F0B4A04A764DE16ECDA69C9.vb:25-60 \u2014 before extracting anything, compare \u00602017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Entry/B31EA3F20509489BB52A0381E8838AFC.vb\u0060 and \u00602017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Entry/A330EB8E54CA46B3A28E41DA9E77F9F6.vb\u0060 as WHOLE FILES: 91% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Entry/B31EA3F20509489BB52A0381E8838AFC.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd4c0dd0e70c8d43a42638e57b7fa3e06d7ab735bd135f765c774a9d50a3c098"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (37\u201338 lines \u00D7 8): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:160-196 | 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:255-292 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:160-196 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:255-292 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:160-196 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:255-292 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:160-196 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:255-292 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 274 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"9008c5564a959476bf3f16ec93a60bb8c45268f7d13a77131f13d11f6b2add65"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (38 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:412-449 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:412-449 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:412-449 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:412-449 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 291 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":412}}}],"partialFingerprints":{"codehealthFindingId/v1":"f270d995258ce7056f12bdd9061b354eff20078a9c1cffe3791b95c3e5b01980"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (38 lines \u00D7 4): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:100-137 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:100-137 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:100-137 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:100-137 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 383 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b6f9f959c2dcba8dcee1d041ebb91170abb288036070da260f19878f6b6789d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (38 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:57-94 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:57-94 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:57-94 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:57-94 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 330 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9524f2e61c080d6a4fe7c2e2ca45f940461db05e581a78f4f366684b1ea98ba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (36\u201337 lines \u00D7 8): 2015/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb:151-186 | 2015/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb:240-276 | 2016/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb:151-186 | 2016/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb:240-276 | 2017/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb:151-186 | 2017/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb:240-276 | 2018/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb:151-186 | 2018/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb:240-276 \u2014 before extracting anything, compare \u00602015/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb\u0060 and \u00602016/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 126 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"e82f8f816e7cc786577e455e572d565f2f3130ce2e9cf01f49b6e65b0c8c2334"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (37 lines \u00D7 4): 2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:287-323 | 2016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:287-323 | 2017/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:287-323 | 2018/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:287-323 \u2014 before extracting anything, compare \u00602015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb\u0060 and \u00602016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 187 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"44f05074d6e6f7def93ee07a487672f5a2a1dcf1f01699b7cc8fbe8cafc3e6f4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (37 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb:81-117 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb:81-117 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb:81-117 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb:81-117 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 68 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e4c4b4be6f72621a64bd4f951e0870c9cf80d6c8a50dd5c9ec67dc793cdee0f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (37 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Modules/mod1.vb:9-45 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Modules/mod1.vb:9-45 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Modules/mod1.vb:9-45 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Modules/mod1.vb:9-45 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Modules/mod1.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Modules/mod1.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Modules/mod1.vb"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e79727af96fcadbe3c539c8076a028fe5ea8d7824866931319925c0b6ac0584"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (37 lines \u00D7 4): 2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Entry/CmdMain.vb:39-75 | 2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Entry/CmdMain.vb:39-75 | 2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Entry/CmdMain.vb:39-75 | 2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Entry/CmdMain.vb:39-75 \u2014 before extracting anything, compare \u00602015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Entry/CmdMain.vb\u0060 and \u00602016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Entry/CmdMain.vb\u0060 as WHOLE FILES: 96% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Entry/CmdMain.vb:39\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":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Entry/CmdMain.vb"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"50735ee6c6fcd9f16ae66befee1acb1715ff5484cb9a24cd4cad2ff2a0b10598"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (37 lines \u00D7 4): 2015/Case.LightingLayout/Case.LightingLayout/Entry/CmdMain.vb:37-73 | 2016/Case.LightingLayout/Case.LightingLayout/Entry/CmdMain.vb:37-73 | 2017/Case.LightingLayout/Case.LightingLayout/Entry/CmdMain.vb:37-73 | 2018/Case.LightingLayout/Case.LightingLayout/Entry/CmdMain.vb:37-73 \u2014 before extracting anything, compare \u00602015/Case.LightingLayout/Case.LightingLayout/Entry/CmdMain.vb\u0060 and \u00602016/Case.LightingLayout/Case.LightingLayout/Entry/CmdMain.vb\u0060 as WHOLE FILES: 97% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.LightingLayout/Case.LightingLayout/Entry/CmdMain.vb:37\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":"2015/Case.LightingLayout/Case.LightingLayout/Entry/CmdMain.vb"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"b51aaa91d4fc318a8363c9b8e9ec947d6e6d9ac75074c13cf46c8b8994209261"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (37 lines \u00D7 4): 2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb:239-275 | 2016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb:239-275 | 2017/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb:239-275 | 2018/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb:239-275 \u2014 before extracting anything, compare \u00602015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb\u0060 and \u00602016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 114 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"343ef031ef0c530f4e8a702b92ba9e6171b5aea6e622090566d7db6ed4ea3143"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (34 lines \u00D7 8): 2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb:113-146 | 2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb:112-145 | 2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb:113-146 | 2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb:112-145 | 2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb:113-146 | 2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb:112-145 | 2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb:113-146 | 2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb:112-145 \u2014 before extracting anything, compare \u00602015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb\u0060 and \u00602016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 192 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"b07c9ba6d071ecce5e3bad45a060207ba9ecee45094315f929f1f328835f06d4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (36 lines \u00D7 4): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:382-417 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:382-417 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:382-417 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:382-417 \u2014 before extracting anything, compare \u00602015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb\u0060 and \u00602016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 323 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":382}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef6f8895d45b7d83d92b4bcd5871e132b268a0d97b51f58a9977d57518feed35"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (36 lines \u00D7 4): 2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb:25-60 | 2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb:25-60 | 2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb:25-60 | 2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb:25-60 \u2014 before extracting anything, compare \u00602015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb\u0060 and \u00602016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbfe906c78d181681a034befc359f3eb09b62415a7a7cf67e053efd27e38129a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (36 lines \u00D7 4): 2015/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb:74-109 | 2016/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb:74-109 | 2017/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb:74-109 | 2018/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb:74-109 \u2014 before extracting anything, compare \u00602015/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb\u0060 and \u00602016/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7221c5c697ee6d683c2bebf355dd759da60914da8abb1f291982b3942888963"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (36 lines \u00D7 4): 2015/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:131-166 | 2016/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:131-166 | 2017/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:131-166 | 2018/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:131-166 \u2014 before extracting anything, compare \u00602015/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb\u0060 and \u00602016/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 252 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ab9db2d107e21fe8299fa94cb5d093b0d17e64045e7a46e3f2eb61b15fc5a30"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (36 lines \u00D7 4): 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:455-490 | 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:455-490 | 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:455-490 | 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:455-490 \u2014 before extracting anything, compare \u00602015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 and \u00602016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 as WHOLE FILES: this scan already matched 17 separate duplicated blocks between them, totalling at least 421 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:455\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":455}}}],"partialFingerprints":{"codehealthFindingId/v1":"e781d998947602acc83117cf35a70019a81f626b93f5e39582ad1567b75dd948"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (35 lines \u00D7 4): 2015/Case.DimensionOverrides/Case.DimensionOverrides/Data/clsSettings.cs:55-89 | 2016/Case.DimensionOverrides/Case.DimensionOverrides/Data/clsSettings.cs:55-89 | 2017/Case.DimensionOverrides/Case.DimensionOverrides/Data/clsSettings.cs:55-89 | 2018/Case.DimensionOverrides/Case.DimensionOverrides/Data/clsSettings.cs:50-84 \u2014 before extracting anything, compare \u00602015/Case.DimensionOverrides/Case.DimensionOverrides/Data/clsSettings.cs\u0060 and \u00602016/Case.DimensionOverrides/Case.DimensionOverrides/Data/clsSettings.cs\u0060 as WHOLE FILES: 98% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DimensionOverrides/Case.DimensionOverrides/Data/clsSettings.cs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"a98df5fc4a3ad03f3338524fe8cf169449c399f07d303054289b019c20e12d7a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (34\u201336 lines \u00D7 2): 2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Entry/A330EB8E54CA46B3A28E41DA9E77F9F6.vb:25-58 | 2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Entry/BC456E773F0B4A04A764DE16ECDA69C9.vb:25-60 \u2014 before extracting anything, compare \u00602018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Entry/A330EB8E54CA46B3A28E41DA9E77F9F6.vb\u0060 and \u00602018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Entry/BC456E773F0B4A04A764DE16ECDA69C9.vb\u0060 as WHOLE FILES: 91% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Entry/A330EB8E54CA46B3A28E41DA9E77F9F6.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"7433ef1bb8b8825ce1aecfca8a4d74d8d3dbf378aa5d1ebb7a8e2ea3e186d6a7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (35 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb:44-78 | 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb:42-76 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb:44-78 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb:42-76 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb\u0060 and \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 123 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"a488797a0bca0d9c82d6595c17291ff45af561c92bfc8c9d433b6f8700cc7876"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (35 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb:40-74 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb:40-74 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb:40-74 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb:40-74 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 76 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"f100b749b2f9d9479874408640bac0feb8029dc857719301aa669594541b2940"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (35 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:463-497 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:463-497 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:463-497 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:463-497 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 291 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":463}}}],"partialFingerprints":{"codehealthFindingId/v1":"665a9b4325f3743fe89f967a2a047de397cfb8516f2455dee3fa86e8ab68bf71"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (35 lines \u00D7 4): 2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Entry/CEB749CFCF844AE8B76F40E3EBAA2FF7.vb:35-69 | 2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Entry/CEB749CFCF844AE8B76F40E3EBAA2FF7.vb:35-69 | 2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Entry/CEB749CFCF844AE8B76F40E3EBAA2FF7.vb:35-69 | 2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Entry/CEB749CFCF844AE8B76F40E3EBAA2FF7.vb:35-69 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Entry/CEB749CFCF844AE8B76F40E3EBAA2FF7.vb\u0060 and \u00602016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Entry/CEB749CFCF844AE8B76F40E3EBAA2FF7.vb\u0060 as WHOLE FILES: 96% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Entry/CEB749CFCF844AE8B76F40E3EBAA2FF7.vb:35\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":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Entry/CEB749CFCF844AE8B76F40E3EBAA2FF7.vb"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ca17ba1703889798174f749f860bf5bfd35214f50744daef52024abbe4206cf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (35 lines \u00D7 4): 2015/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:53-87 | 2016/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:53-87 | 2017/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:53-87 | 2018/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:53-87 \u2014 before extracting anything, compare \u00602015/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb\u0060 and \u00602016/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 93 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:53\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":"2015/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8737ed8fe6975ffa3ceb07f82f9a353e5e649e4d1de4354f5f89ab366b1047b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (35 lines \u00D7 4): 2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:448-482 | 2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:448-482 | 2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:448-482 | 2018/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:449-483 \u2014 before extracting anything, compare \u00602015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb\u0060 and \u00602016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 364 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":448}}}],"partialFingerprints":{"codehealthFindingId/v1":"34201d39e71ccf618b510646554838fc610e9280cc9a7c13447ef12b36c6c327"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (35 lines \u00D7 4): 2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:313-347 | 2016/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:313-347 | 2017/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:313-347 | 2018/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:313-347 \u2014 before extracting anything, compare \u00602015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb\u0060 and \u00602016/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 245 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"a056f9c0317c37dce67ad16ee32caec88d9d2208d13d8bc91442126efda1dea1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (34 lines \u00D7 4): 2015/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallTransform.cs:91-124 | 2016/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallTransform.cs:91-124 | 2017/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallTransform.cs:91-124 | 2018/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallTransform.cs:86-119 \u2014 before extracting anything, compare \u00602015/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallTransform.cs\u0060 and \u00602016/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallTransform.cs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 56 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallTransform.cs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"91540492f13858eecb758429152ed7152e701e8d783621cc21bd073faad0bd7b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (35 lines \u00D7 4): 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb:44-78 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb:42-76 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb:44-78 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb:42-76 \u2014 before extracting anything, compare \u00602017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb\u0060 and \u00602017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 123 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"3296b6f2019b9b8ff05742d0831775ca5a13a39be26f01f62193beadbdfa31eb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (33\u201334 lines \u00D7 22): 2015/Case.ApplySysOrient/API/clsAPI.cs:116-148 | 2015/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs:116-148 | 2015/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs:116-149 | 2015/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs:116-149 | 2015/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs:116-148 | 2015/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs:116-148 | 2015/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs:116-148 | 2016/Case.ApplySysOrient/API/clsAPI.cs:116-148 | 2016/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs:116-148 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs:116-149 | 2016/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs:116-149 | 2016/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs:116-148 | 2016/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs:116-148 | 2016/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs:116-148 | 2017/Case.ApplySysOrient/API/clsAPI.cs:116-148 | 2017/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs:116-148 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs:116-149 | 2017/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs:116-149 | 2017/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs:116-148 | 2017/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs:116-148 | 2017/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs:116-148 | 2018/Case.ApplySysOrient/API/clsAPI.cs:116-148 \u2014 before extracting anything, compare \u00602015/Case.ApplySysOrient/API/clsAPI.cs\u0060 and \u00602015/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 122 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"47328cf5f79b796f7ba16e58733d7a237f52ba1e031598ae25e98e573bb51eb2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (34 lines \u00D7 8): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:169-202 | 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:136-169 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:169-202 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:136-169 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:169-202 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:136-169 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:169-202 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:136-169 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 422 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f63c30c18995ef2d2fba4ec06549aa61b80cfca04c0ba68c906a040c785bc1c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (34 lines \u00D7 8): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:362-395 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:811-844 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:362-395 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:811-844 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:362-395 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:811-844 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:362-395 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:811-844 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb\u0060 and \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 92 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"e92aa09a55eb05b9590c5a16ec38748dae12ceb5afe506553b28ae79dd80cae6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (34 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F3.vb:40-73 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F3.vb:40-73 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F3.vb:40-73 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F3.vb:40-73 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F3.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F3.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 75 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F3.vb"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"54e9af9d05f417588a81b58011d50b9b77dc6d7b40f53cc14e85cb88da2f2f95"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (34 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:599-632 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:599-632 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:599-632 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:599-632 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 610 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":599}}}],"partialFingerprints":{"codehealthFindingId/v1":"d65d94c1dad6662bea888bee5cab5e71ab859bcfe44b4f9c51767133163ed03f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (34 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb:33-66 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb:33-66 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb:33-66 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb:33-66 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"79e39efadeab33ec9b979796d509ece982fd5430d3c81b7de10c072236b4c0d5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (34 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:682-715 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:682-715 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:682-715 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb:682-715 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 604 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":682}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf8c88ab35dc146b4cfa376a2e6cfd75f70ecb3f0cbdd7bf6ebe75327654f437"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (34 lines \u00D7 2): 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Entry/D4E12C09AFB84891A24F3AF186B13DD3.vb:24-57 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Entry/D4E12C09AFB84891A24F3AF186B13DD3.vb:24-57 \u2014 before extracting anything, compare \u00602017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Entry/D4E12C09AFB84891A24F3AF186B13DD3.vb\u0060 and \u00602018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Entry/D4E12C09AFB84891A24F3AF186B13DD3.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Entry/D4E12C09AFB84891A24F3AF186B13DD3.vb"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"d49ee3700adbe66f3d23ddd221f74e8fb0e55abb461a2246f561cdebbeeeb710"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (32\u201333 lines \u00D7 8): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb:42-73 | 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb:39-71 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb:42-73 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb:39-71 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb:42-73 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb:39-71 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb:42-73 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb:39-71 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb\u0060 and \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 79 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb:42\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"5473843080bf818ff4f0c576c9a17323f86c86df6446592f0e86bde7d40ad604"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (33 lines \u00D7 4): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb:90-122 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb:90-122 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb:90-122 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb:90-122 \u2014 before extracting anything, compare \u00602015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb\u0060 and \u00602016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"89a70829c4c50ceeb49b8cd5893ce3f641805b145f66680e211702dcfea87997"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (33 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:285-317 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:285-317 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:285-317 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:285-317 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 291 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"aac86248abc6163971147fb25ced9ecd47a6fa4cd788f070bedcdda55ec28acf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (33 lines \u00D7 4): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb:111-143 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb:111-143 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb:111-143 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb:111-143 \u2014 before extracting anything, compare \u00602015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb\u0060 and \u00602016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"2801f72d1bee6d20baa50a462a8ffc9e386a616817ad7dbcff89e75fa0c97a76"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (33 lines \u00D7 4): 2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:262-294 | 2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:262-294 | 2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:262-294 | 2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:262-294 \u2014 before extracting anything, compare \u00602015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 149 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"81d48d7bd107d2e1c3cd40d2b8a42529c6abd0c8076adb90dfe48b989a120b3c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (33 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:254-286 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:254-286 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:254-286 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:254-286 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 330 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"96eea6cddf8c950e6d3e0cf5f8a33a3513c1813bda8f5e076173116831924ac8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (33 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:323-355 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:323-355 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:323-355 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:323-355 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 330 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":323}}}],"partialFingerprints":{"codehealthFindingId/v1":"2447f33fb0731c4d9cc6b51c8fed043f336813ed244275f8213213d168a85f58"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (33 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:407-439 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:407-439 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:407-439 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:407-439 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 330 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":407}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cc192d42b6b7f241f356c2e8f2b694de46c69bb5593d8c58c8cf1b4e229505b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (33 lines \u00D7 3): 2015/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs:115-147 | 2016/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs:115-147 | 2017/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs:115-147 \u2014 before extracting anything, compare \u00602015/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs\u0060 and \u00602016/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 121 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"1eff2c1b9953a38655819b6aa81c6e0132c6434718af99e4c6e7ea07384220db"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (31 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb:66-96 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb:66-96 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb:66-96 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb:66-96 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 106 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"7537358cd0bd5ee80521791803961c6ee77523068a3918c52ffac88cfe3ed884"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (32 lines \u00D7 4): 2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Entry/A01A0A226EBE4CD89D655C55B997650F.vb:38-69 | 2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Entry/A01A0A226EBE4CD89D655C55B997650F.vb:38-69 | 2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Entry/A01A0A226EBE4CD89D655C55B997650F.vb:38-69 | 2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Entry/A01A0A226EBE4CD89D655C55B997650F.vb:38-69 \u2014 before extracting anything, compare \u00602015/Case.Subs.SuperTag/Case.Subs.SuperTag/Entry/A01A0A226EBE4CD89D655C55B997650F.vb\u0060 and \u00602016/Case.Subs.SuperTag/Case.Subs.SuperTag/Entry/A01A0A226EBE4CD89D655C55B997650F.vb\u0060 as WHOLE FILES: 94% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.Subs.SuperTag/Case.Subs.SuperTag/Entry/A01A0A226EBE4CD89D655C55B997650F.vb:38\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":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Entry/A01A0A226EBE4CD89D655C55B997650F.vb"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed8406075002383b49ea67628ee9a150dc726433e5780a9884acaac256dea617"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (32 lines \u00D7 4): 2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb:198-229 | 2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb:198-229 | 2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb:198-229 | 2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb:198-229 \u2014 before extracting anything, compare \u00602015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb\u0060 and \u00602016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 52 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"a46960ad053cf2fdca476ff845ed054c9ce1e6ce4f4a79de598c0c30153cc982"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (32 lines \u00D7 4): 2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb:292-323 | 2016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb:292-323 | 2017/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb:292-323 | 2018/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb:292-323 \u2014 before extracting anything, compare \u00602015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb\u0060 and \u00602016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 114 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9b34fc9ffe59b3d0a7ea8160b7654b3b34d70d40b60d20c6e476869e7e65321"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 4): 2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:67-96 | 2016/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:67-96 | 2017/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:67-96 | 2018/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:66-95 \u2014 before extracting anything, compare \u00602015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs\u0060 and \u00602016/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 264 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:67\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. \u2605 These copies have DRIFTED, and that is worth reading before extracting anything: just after the matched lines, \u00602015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:99\u0060 calls \u0060RecordUsage\u0060 and \u00602018/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:97\u0060 does not \u2014 after which the two agree again for 4 more lines. One of those two behaviours is the intended one and the other is what a copy-paste left behind, so decide which BEFORE unifying them: extracting the shared part will silently settle it, and if the copy that skips the call is the wrong one, that bug is already live."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"474b82aadfa3ea7bf274da7c9cd380693d2247e4530a04730bcca70520d78e4a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (31 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb:343-373 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb:343-373 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb:343-373 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb:343-373 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 402 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f28e1dc0321dd96aad79765c7d139e2dad617ed053005b16a97a86ddabedfbf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (31 lines \u00D7 4): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:286-316 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:286-316 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:286-316 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:286-316 \u2014 before extracting anything, compare \u00602015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 172 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"be2642b025de25566655e6efa49a7dac32b5f60aeedbf0a1659577db362a793d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (31 lines \u00D7 4): 2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:275-305 | 2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:275-305 | 2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:275-305 | 2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:275-305 \u2014 before extracting anything, compare \u00602015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb\u0060 and \u00602016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 201 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e3d8c955488a535dc195fa8f79c6817437766b59e21e11834c673944e6e874e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 4): 2015/Case.ApplySysOrient/Data/clsUtil.cs:54-83 | 2016/Case.ApplySysOrient/Data/clsUtil.cs:54-83 | 2017/Case.ApplySysOrient/Data/clsUtil.cs:54-83 | 2018/Case.ApplySysOrient/Data/clsUtil.cs:54-83 \u2014 before extracting anything, compare \u00602015/Case.ApplySysOrient/Data/clsUtil.cs\u0060 and \u00602016/Case.ApplySysOrient/Data/clsUtil.cs\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsUtil.cs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2b07b1dea2a2a953086bc391d3daae646c51e751088b00d1527449ccbb36a7b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (31 lines \u00D7 4): 2015/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb:31-61 | 2016/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb:31-61 | 2017/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb:31-61 | 2018/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb:31-61 \u2014 before extracting anything, compare \u00602015/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb\u0060 and \u00602016/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"d906065b99b86a3738cc8e0cc6ac2f4dc028753b087ffa96cd36f8a8c151114f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (31 lines \u00D7 4): 2015/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:88-118 | 2016/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:88-118 | 2017/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:88-118 | 2018/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb:88-118 \u2014 before extracting anything, compare \u00602015/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb\u0060 and \u00602016/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 252 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"be957215e5f4c984fdac4bb66d0f6cd3926e42b1215038b79b615c2458ac9d68"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (31 lines \u00D7 4): 2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Entry/CmdMain.vb:36-66 | 2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Entry/CmdMain.vb:36-66 | 2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Entry/CmdMain.vb:36-66 | 2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Entry/CmdMain.vb:36-66 \u2014 before extracting anything, compare \u00602015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Entry/CmdMain.vb\u0060 and \u00602016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Entry/CmdMain.vb\u0060 as WHOLE FILES: 96% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Entry/CmdMain.vb:36\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":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Entry/CmdMain.vb"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"448a5c039fa670f2aeee82755a7547decee8012b992c8bf376018847c5250180"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (31 lines \u00D7 4): 2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:39-69 | 2016/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:39-69 | 2017/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:39-69 | 2018/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:39-69 \u2014 before extracting anything, compare \u00602015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb\u0060 and \u00602016/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 173 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca81a7cf73a0de85ba6cab3465ef2e000ff7501dfcb2551d6df9fc54b59da3a3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (31 lines \u00D7 4): 2015/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs:77-107 | 2016/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs:77-107 | 2017/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs:77-107 | 2018/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs:72-102 \u2014 before extracting anything, compare \u00602015/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs\u0060 and \u00602016/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 55 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc3101da76ed1ed8c41b23c91135574bdcc9da04119f104037dea55f0be60863"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (31 lines \u00D7 3): 2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb:229-259 | 2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb:229-259 | 2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb:229-259 \u2014 before extracting anything, compare \u00602015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb\u0060 and \u00602016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 137 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"f164721ad7e17ee42dd7568c561c6b342fdb0f10725b5f932ce73ee5c9f85883"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 8): 2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:396-425 | 2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:453-482 | 2016/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:396-425 | 2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:453-482 | 2017/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:396-425 | 2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:453-482 | 2018/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:391-420 | 2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:453-482 \u2014 before extracting anything, compare \u00602015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb\u0060 and \u00602015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 94 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":396}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1d9b5505f4ab0516700e5dfd84a366015eac5ffc09e61cf35237711d30c5937"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28\u201330 lines \u00D7 8): 2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:266-293 | 2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:348-377 | 2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:266-293 | 2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:348-377 | 2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:266-293 | 2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:348-377 | 2018/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:266-293 | 2018/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:348-377 \u2014 before extracting anything, compare \u00602015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb\u0060 and \u00602016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 95 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:348\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":"2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5e12cf4399e8529feeba9b43b366c2d9476f0a9fe0455421e205bc51be61be9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 4): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:327-356 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:327-356 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:327-356 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:327-356 \u2014 before extracting anything, compare \u00602015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 172 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"76a6fc3c9028642f99f073c4664468cdf62e9ab9fae6c7dfcfcd76b0400321cf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 4): 2015/Case.Subs.Worksets/Case.Subs.Worksets/Entry/CEB749CFCF844AE8B76F40E3EBAA2FF7.vb:37-66 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/Entry/CEB749CFCF844AE8B76F40E3EBAA2FF7.vb:37-66 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/Entry/CEB749CFCF844AE8B76F40E3EBAA2FF7.vb:37-66 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/Entry/CEB749CFCF844AE8B76F40E3EBAA2FF7.vb:37-66 \u2014 before extracting anything, compare \u00602015/Case.Subs.Worksets/Case.Subs.Worksets/Entry/CEB749CFCF844AE8B76F40E3EBAA2FF7.vb\u0060 and \u00602016/Case.Subs.Worksets/Case.Subs.Worksets/Entry/CEB749CFCF844AE8B76F40E3EBAA2FF7.vb\u0060 as WHOLE FILES: 96% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.Subs.Worksets/Case.Subs.Worksets/Entry/CEB749CFCF844AE8B76F40E3EBAA2FF7.vb:37\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":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Entry/CEB749CFCF844AE8B76F40E3EBAA2FF7.vb"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"a52516d6473d6b9860dcb27eeb9edc6a65fe2da1faf5142ff53fe7d22ba9a143"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 4): 2015/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb:27-56 | 2015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/Entry/CmdMain.vb:28-57 | 2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Entry/CmdMain.vb:27-56 | 2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Entry/CmdMain.vb:28-57 \u2014 before extracting anything, compare \u00602015/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb\u0060 and \u00602015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/Entry/CmdMain.vb\u0060 as WHOLE FILES: 93% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab1726f4760f88402a6aa424b918a4751b37c5cf83dd8347c8ee1d0127403acc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 4): 2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb:68-97 | 2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb:68-97 | 2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb:68-97 | 2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb:68-97 \u2014 before extracting anything, compare \u00602015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb\u0060 and \u00602016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 130 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"88062c77f00e06a23fc2a32f69eb973d3ba6f9434fa40cfcb18a51ecc7a06780"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 4): 2015/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb:255-284 | 2016/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb:255-284 | 2017/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb:255-284 | 2018/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb:255-284 \u2014 before extracting anything, compare \u00602015/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb\u0060 and \u00602016/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 242 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f59fe46d32e97de7831b0050c8d84196a6e3c0061f1144b402b1e16186ebfbc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29 lines \u00D7 4): 2015/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs:60-88 | 2016/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs:60-88 | 2017/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs:60-88 | 2018/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs:60-88 \u2014 before extracting anything, compare \u00602015/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs\u0060 and \u00602016/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d065e7b840e97d98df4b3ae4c333fbd0bd3f2027cdabba96a281e8abc89838f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 4): 2016/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb:27-56 | 2016/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/Entry/CmdMain.vb:28-57 | 2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Entry/CmdMain.vb:27-56 | 2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Entry/CmdMain.vb:28-57 \u2014 before extracting anything, compare \u00602016/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb\u0060 and \u00602016/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/Entry/CmdMain.vb\u0060 as WHOLE FILES: 93% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"c93ef56c74837f5198874ed0f9707679994f4fb9bb1b8c839f829f294ce799bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 4): 2017/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb:27-56 | 2017/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/Entry/CmdMain.vb:28-57 | 2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Entry/CmdMain.vb:27-56 | 2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Entry/CmdMain.vb:28-57 \u2014 before extracting anything, compare \u00602017/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb\u0060 and \u00602017/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/Entry/CmdMain.vb\u0060 as WHOLE FILES: 93% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"bebf5343ab25be8bb8908518756cbd30e5140de10ddf0ee4e15f2fe570121ea9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 4): 2018/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb:27-56 | 2018/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/Entry/CmdMain.vb:28-57 | 2018/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Entry/CmdMain.vb:27-56 | 2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Entry/CmdMain.vb:28-57 \u2014 before extracting anything, compare \u00602018/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb\u0060 and \u00602018/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/Entry/CmdMain.vb\u0060 as WHOLE FILES: 93% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c58a507ecdeee687e92bd9f9b24d01f2c03f7a43a353dbc37f3bea42ad9a05a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 3): 2015/Case.ViewTemplates/Case.ViewTemplates/Entry/CmdMain.vb:37-66 | 2016/Case.ViewTemplates/Case.ViewTemplates/Entry/CmdMain.vb:37-66 | 2017/Case.ViewTemplates/Case.ViewTemplates/Entry/CmdMain.vb:37-66 \u2014 before extracting anything, compare \u00602015/Case.ViewTemplates/Case.ViewTemplates/Entry/CmdMain.vb\u0060 and \u00602016/Case.ViewTemplates/Case.ViewTemplates/Entry/CmdMain.vb\u0060 as WHOLE FILES: 96% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.ViewTemplates/Case.ViewTemplates/Entry/CmdMain.vb:37\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":"2015/Case.ViewTemplates/Case.ViewTemplates/Entry/CmdMain.vb"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d1b3541792d6c3f180988589b3acc329b1351d639d153315ac39293a02567f0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 3): 2015/Case.RoomSync/Case.RoomSync/Entry/CmdMain.vb:34-63 | 2016/Case.RoomSync/Case.RoomSync/Entry/CmdMain.vb:34-63 | 2017/Case.RoomSync/Case.RoomSync/Entry/CmdMain.vb:34-63 \u2014 before extracting anything, compare \u00602015/Case.RoomSync/Case.RoomSync/Entry/CmdMain.vb\u0060 and \u00602016/Case.RoomSync/Case.RoomSync/Entry/CmdMain.vb\u0060 as WHOLE FILES: 96% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.RoomSync/Case.RoomSync/Entry/CmdMain.vb:34\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":"2015/Case.RoomSync/Case.RoomSync/Entry/CmdMain.vb"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f67f28cdaa8928cd5c3aa3144cccfdf12bfc21b716250fd6893bb3f4762076c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 3): Case.AppsRibbon.2017/Entry/AppMain.vb:39-68 | Case.AppsRibbon.2018/Entry/AppMain.vb:39-68 | Case.AppsRibbon/Entry/AppMain.vb:39-68 \u2014 before extracting anything, compare \u0060Case.AppsRibbon.2017/Entry/AppMain.vb\u0060 and \u0060Case.AppsRibbon.2018/Entry/AppMain.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 148 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2017/Entry/AppMain.vb"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"8193717ed7698c69ab03036f22faea1ec38c27c516ea74b2d3477f0c85aba223"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 2): 2016/Case.Navis2BCF/Case.Navis2BCF/CASERibbon.cs:36-63 | 2017/Case.Navis2BCF/Case.Navis2BCF/CASERibbon.cs:36-63 \u2014 before extracting anything, compare \u00602016/Case.Navis2BCF/Case.Navis2BCF/CASERibbon.cs\u0060 and \u00602017/Case.Navis2BCF/Case.Navis2BCF/CASERibbon.cs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 79 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Navis2BCF/Case.Navis2BCF/CASERibbon.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"41774a6674219978468106edbd6fb54ca057167fe3b1001a43cf366723bfabf2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25\u201329 lines \u00D7 16): 2015/Case.DimensionOverrides/Case.DimensionOverrides/Entry/CmdMain.cs:37-62 | 2015/Case.FamilySubcategories/Case.FamilySubcategories/Entry/CmdMain.cs:32-56 | 2015/Case.ObjectStyles/Case.ObjectStyles/Entry/CmdMain.cs:36-64 | 2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Entry/CmdMain.cs:36-64 | 2016/Case.DimensionOverrides/Case.DimensionOverrides/Entry/CmdMain.cs:37-62 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/Entry/CmdMain.cs:32-56 | 2016/Case.ObjectStyles/Case.ObjectStyles/Entry/CmdMain.cs:36-64 | 2016/Case.ReportGroupsByView/Case.ReportGroupsByView/Entry/CmdMain.cs:36-64 | 2017/Case.DimensionOverrides/Case.DimensionOverrides/Entry/CmdMain.cs:37-62 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/Entry/CmdMain.cs:32-56 | 2017/Case.ObjectStyles/Case.ObjectStyles/Entry/CmdMain.cs:36-64 | 2017/Case.ReportGroupsByView/Case.ReportGroupsByView/Entry/CmdMain.cs:36-64 | 2018/Case.DimensionOverrides/Case.DimensionOverrides/Entry/CmdMain.cs:32-57 | 2018/Case.FamilySubcategories/Case.FamilySubcategories/Entry/CmdMain.cs:32-56 | 2018/Case.ObjectStyles/Case.ObjectStyles/Entry/CmdMain.cs:36-64 | 2018/Case.ReportGroupsByView/Case.ReportGroupsByView/Entry/CmdMain.cs:36-64 \u2014 before extracting anything, compare \u00602015/Case.DimensionOverrides/Case.DimensionOverrides/Entry/CmdMain.cs\u0060 and \u00602015/Case.ObjectStyles/Case.ObjectStyles/Entry/CmdMain.cs\u0060 as WHOLE FILES: 89% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.DimensionOverrides/Case.DimensionOverrides/Entry/CmdMain.cs:37\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DimensionOverrides/Case.DimensionOverrides/Entry/CmdMain.cs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed287e7e65cd0bed9de4aeb23c310c75a629c6c433b5305f294d2d3629da973c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29 lines \u00D7 4): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:308-336 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:308-336 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:308-336 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:308-336 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 383 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"75dbc6587f0b3dc56172e041d573e80fa95a486342879e106c2919f4aefc44e0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29 lines \u00D7 4): 2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:75-103 | 2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:75-103 | 2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:75-103 | 2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:75-103 \u2014 before extracting anything, compare \u00602015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb\u0060 and \u00602016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 264 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a379523c778a1bc1fe71acccb92a769998797e85df7d1d2a7a482c37e2fbcbb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:467-495 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:467-495 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:467-495 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:467-495 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 217 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":467}}}],"partialFingerprints":{"codehealthFindingId/v1":"bab538e1348fb0443bdf7e2b0a9b866d193689e329353120e35cb336c3c318f4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:303-331 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:303-331 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:303-331 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:302-330 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 317 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":303}}}],"partialFingerprints":{"codehealthFindingId/v1":"03720e7e159319235eebffbb63a4de01e90b18ef16db346a19a7880a3d4dc1e4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29 lines \u00D7 4): 2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb:178-206 | 2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb:178-206 | 2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb:178-206 | 2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb:178-206 \u2014 before extracting anything, compare \u00602015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb\u0060 and \u00602016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 70 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"c64779fd825e2763c0ee9ef04d4581c0ccf1e2584925d91d35308b33ddeabbf9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29 lines \u00D7 4): 2015/Case.SharedParameters/Case.SharedParameters/Entry/CmdMain.vb:36-64 | 2016/Case.SharedParameters/Case.SharedParameters/Entry/CmdMain.vb:36-64 | 2017/Case.SharedParameters/Case.SharedParameters/Entry/CmdMain.vb:36-64 | 2018/Case.SharedParameters/Case.SharedParameters/Entry/CmdMain.vb:36-64 \u2014 before extracting anything, compare \u00602015/Case.SharedParameters/Case.SharedParameters/Entry/CmdMain.vb\u0060 and \u00602016/Case.SharedParameters/Case.SharedParameters/Entry/CmdMain.vb\u0060 as WHOLE FILES: 96% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.SharedParameters/Case.SharedParameters/Entry/CmdMain.vb:36\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":"2015/Case.SharedParameters/Case.SharedParameters/Entry/CmdMain.vb"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9962cf026dcd5bfcd6284a192d959210dab60144f4746c9453da13c7212e49d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27 lines \u00D7 4): 2015/Case.Subs.KeyMatcher/Entry/CmdMain.cs:24-50 | 2016/Case.Subs.KeyMatcher/Entry/CmdMain.cs:24-50 | 2017/Case.Subs.KeyMatcher/Entry/CmdMain.cs:24-50 | 2018/Case.Subs.KeyMatcher/Entry/CmdMain.cs:24-50 \u2014 before extracting anything, compare \u00602015/Case.Subs.KeyMatcher/Entry/CmdMain.cs\u0060 and \u00602016/Case.Subs.KeyMatcher/Entry/CmdMain.cs\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.KeyMatcher/Entry/CmdMain.cs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"78a20e74f88729d9a132dae0ed9c0cdc2044691479d9e5f6f1a3568089783e5d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28\u201329 lines \u00D7 4): 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb:29-57 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb:31-58 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F3.vb:29-56 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb:29-56 \u2014 before extracting anything, compare \u00602018/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb\u0060 and \u00602018/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb\u0060 as WHOLE FILES: 88% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"088f7bc604343cd2553f97e63cc684580ecf8f7d4b22696fb8edf255ccb73afc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29 lines \u00D7 2): 2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:83-111 | 2016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:83-111 \u2014 before extracting anything, compare \u00602015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb\u0060 and \u00602016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 260 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"68459eedd943a19af3a9abddc87c538439f83d798bd99eb70c79ad374b70b341"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29 lines \u00D7 2): 2017/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:84-112 | 2018/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:84-112 \u2014 before extracting anything, compare \u00602017/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb\u0060 and \u00602018/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 260 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"cde9266517f56b9b098a49d59bd50f7f5fc9fee9a44b3f379c0029b135ca7861"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 57): 2015/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb:102-129 | 2015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/API/clsUsage.vb:102-129 | 2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/API/clsUsage.vb:102-129 | 2015/Case.Directionality/Case.Directionality/API/clsUsage.vb:102-129 | 2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/API/clsUsage.vb:102-129 | 2015/Case.Export.Families/Case.Export.Families/API/clsUsage.vb:102-129 | 2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/API/clsUsage.vb:102-129 | 2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/API/clsUsage.vb:102-129 | 2015/Case.ImageToDraftingView/Case.ImageToDraftingView/API/clsUsage.vb:102-129 | 2015/Case.LightingLayout/Case.LightingLayout/API/clsUsage.vb:102-129 | 2015/Case.LineChanger/Case.LineChanger/API/clsUsage.vb:102-129 | 2015/Case.ModeledRoomTags/Case.ModeledRoomTags/API/clsUsage.vb:102-129 | 2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/API/clsUsage.vb:102-129 | 2015/Case.RevClouds/Case.RevClouds/API/clsUsage.vb:102-129 | 2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/API/clsUsage.vb:102-129 | 2015/Case.RoomSync/Case.RoomSync/API/clsUsage.vb:102-129 | 2015/Case.SharedParameters/Case.SharedParameters/API/clsUsage.vb:102-129 | 2015/Case.ViewTemplates/Case.ViewTemplates/API/clsUsage.vb:108-135 | 2015/Case.ViewportReporting/Case.ViewportReporting/API/clsUsage.vb:102-129 | 2016/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb:102-129 | 2016/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/API/clsUsage.vb:102-129 | 2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/API/clsUsage.vb:102-129 | 2016/Case.Directionality/Case.Directionality/API/clsUsage.vb:102-129 | 2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/API/clsUsage.vb:102-129 | 2016/Case.Export.Families/Case.Export.Families/API/clsUsage.vb:102-129 | 2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/API/clsUsage.vb:102-129 | 2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/API/clsUsage.vb:102-129 | 2016/Case.ImageToDraftingView/Case.ImageToDraftingView/API/clsUsage.vb:102-129 | 2016/Case.LightingLayout/Case.LightingLayout/API/clsUsage.vb:102-129 | 2016/Case.LineChanger/Case.LineChanger/API/clsUsage.vb:102-129 | 2016/Case.ModeledRoomTags/Case.ModeledRoomTags/API/clsUsage.vb:102-129 | 2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/API/clsUsage.vb:102-129 | 2016/Case.RevClouds/Case.RevClouds/API/clsUsage.vb:102-129 | 2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/API/clsUsage.vb:102-129 | 2016/Case.RoomSync/Case.RoomSync/API/clsUsage.vb:102-129 | 2016/Case.SharedParameters/Case.SharedParameters/API/clsUsage.vb:102-129 | 2016/Case.ViewTemplates/Case.ViewTemplates/API/clsUsage.vb:108-135 | 2016/Case.ViewportReporting/Case.ViewportReporting/API/clsUsage.vb:102-129 | 2017/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb:102-129 | 2017/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/API/clsUsage.vb:102-129 | 2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/API/clsUsage.vb:102-129 | 2017/Case.Directionality/Case.Directionality/API/clsUsage.vb:102-129 | 2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/API/clsUsage.vb:102-129 | 2017/Case.Export.Families/Case.Export.Families/API/clsUsage.vb:102-129 | 2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/API/clsUsage.vb:102-129 | 2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/API/clsUsage.vb:102-129 | 2017/Case.ImageToDraftingView/Case.ImageToDraftingView/API/clsUsage.vb:102-129 | 2017/Case.LightingLayout/Case.LightingLayout/API/clsUsage.vb:102-129 | 2017/Case.LineChanger/Case.LineChanger/API/clsUsage.vb:102-129 | 2017/Case.ModeledRoomTags/Case.ModeledRoomTags/API/clsUsage.vb:102-129 | 2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/API/clsUsage.vb:102-129 | 2017/Case.RevClouds/Case.RevClouds/API/clsUsage.vb:102-129 | 2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/API/clsUsage.vb:102-129 | 2017/Case.RoomSync/Case.RoomSync/API/clsUsage.vb:102-129 | 2017/Case.SharedParameters/Case.SharedParameters/API/clsUsage.vb:102-129 | 2017/Case.ViewTemplates/Case.ViewTemplates/API/clsUsage.vb:108-135 | 2017/Case.ViewportReporting/Case.ViewportReporting/API/clsUsage.vb:102-129 \u2014 before extracting anything, compare \u00602015/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb\u0060 and \u00602015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/API/clsUsage.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 70 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"62ca045e852b3ba5ecaafdff5ada529f49fe7d283e7cba4551ebf3549cad7a9d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:291-318 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:291-318 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:291-318 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:291-318 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 330 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"83825f7ddee9454b021b5a301798a44de774042866382433ee717e271e4785cd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 4): 2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:728-755 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:728-755 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:728-755 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:728-755 \u2014 before extracting anything, compare \u00602015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb\u0060 and \u00602016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 209 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":728}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca5571552877b65fe6018b8412cc73c3965f1b5b3c7d3b3b2e5ff81e6c54f33d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb:183-210 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb:183-210 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb:183-210 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb:183-210 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 115 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"baaacefdbe3bc9892031a9a46581514d0dab0b2e3008f6e2da29d616748ff4ac"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:55-82 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:55-82 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:55-82 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:55-82 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 221 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"3be3ddfc65a852a32b5fa8598ef4f5acd1a90614aa94b46c24689f89379454da"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb:132-159 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb:132-159 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb:132-159 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb:132-159 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 100 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fec8a51355da2a32f3ec12e6a0df4c97f08e0f92ea42f2279fee17703c1ba08"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:74-101 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:74-101 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:74-101 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:74-101 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 317 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"0133840fcf5241184600bdfb4a555ada4159f8a2be6d6431917a208a7f187007"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 4): 2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb:240-267 | 2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb:240-267 | 2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb:240-267 | 2018/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb:237-264 \u2014 before extracting anything, compare \u00602015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb\u0060 and \u00602016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 137 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. \u2605 These copies have DRIFTED, and that is worth reading before extracting anything: just before the matched lines, \u00602015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb:238\u0060 calls \u0060RecordUsage\u0060 and \u00602018/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb:235\u0060 does not \u2014 after which the two agree again for 3 more lines. One of those two behaviours is the intended one and the other is what a copy-paste left behind, so decide which BEFORE unifying them: extracting the shared part will silently settle it, and if the copy that skips the call is the wrong one, that bug is already live."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb4b08c56381b7f5f9eddd5286feedfd005b53cf4f5eada1ce67ca5c6feb8940"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 4): 2015/Case.LineChanger/Case.LineChanger/Forms/form_Main.vb:32-59 | 2016/Case.LineChanger/Case.LineChanger/Forms/form_Main.vb:32-59 | 2017/Case.LineChanger/Case.LineChanger/Forms/form_Main.vb:32-59 | 2018/Case.LineChanger/Case.LineChanger/Forms/form_Main.vb:32-59 \u2014 before extracting anything, compare \u00602015/Case.LineChanger/Case.LineChanger/Forms/form_Main.vb\u0060 and \u00602016/Case.LineChanger/Case.LineChanger/Forms/form_Main.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LineChanger/Case.LineChanger/Forms/form_Main.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f9acc6e6b364ba1584600961096d9b69cfa12e908fd1ded47bad17b5acf2202"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 3): Case.AppsRibbon.2017/Entry/AppMain.vb:108-135 | Case.AppsRibbon.2018/Entry/AppMain.vb:108-135 | Case.AppsRibbon/Entry/AppMain.vb:108-135 \u2014 before extracting anything, compare \u0060Case.AppsRibbon.2017/Entry/AppMain.vb\u0060 and \u0060Case.AppsRibbon.2018/Entry/AppMain.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 148 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2017/Entry/AppMain.vb"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"49d9d60496e9bc240c52ad6eb8a97b48c998a0bbc0b9896473a8c3de9769c0f9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24\u201327 lines \u00D7 25): 2015/Case.ApplySysOrient/API/clsAPI.cs:21-47 | 2015/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs:21-47 | 2015/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs:21-47 | 2015/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs:21-47 | 2015/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs:25-48 | 2015/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs:21-47 | 2015/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs:21-47 | 2015/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs:21-47 | 2016/Case.ApplySysOrient/API/clsAPI.cs:21-47 | 2016/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs:21-47 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs:21-47 | 2016/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs:21-47 | 2016/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs:25-48 | 2016/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs:21-47 | 2016/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs:21-47 | 2016/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs:21-47 | 2017/Case.ApplySysOrient/API/clsAPI.cs:21-47 | 2017/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs:21-47 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs:21-47 | 2017/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs:21-47 | 2017/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs:25-48 | 2017/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs:21-47 | 2017/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs:21-47 | 2017/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs:21-47 | 2018/Case.ApplySysOrient/API/clsAPI.cs:21-47 \u2014 before extracting anything, compare \u00602015/Case.ApplySysOrient/API/clsAPI.cs\u0060 and \u00602015/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 122 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. 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":"2015/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf1d16421e52e3ca655461dc653ab6a8e07296d5be5820d45f69b991a708975c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201327 lines \u00D7 20): 2015/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb:244-264 | 2015/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb:244-264 | 2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb:189-215 | 2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:67-87 | 2015/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb:144-170 | 2016/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb:244-264 | 2016/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb:244-264 | 2016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb:189-215 | 2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:67-87 | 2016/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb:144-170 | 2017/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb:244-264 | 2017/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb:244-264 | 2017/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb:189-215 | 2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:67-87 | 2017/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb:144-170 | 2018/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb:244-264 | 2018/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb:244-264 | 2018/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb:189-215 | 2018/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb:67-87 | 2018/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb:144-170 \u2014 before extracting anything, compare \u00602015/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb\u0060 and \u00602016/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7169c518e4ab17c71e68e07938c92d56b78e977fc020a18d9963a847884224c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27 lines \u00D7 8): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:404-430 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:853-879 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:404-430 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:853-879 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:404-430 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:853-879 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:404-430 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:853-879 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb\u0060 and \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 92 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb"},"region":{"startLine":404}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a8efb5ba0329219519ee0d0aafb34783b07aeeea135ce7e2161c976bafc7714"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:41-67 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:41-67 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:41-67 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:41-67 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 109 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdcfb9f1b078be7eed27dd790213d79b0f8078d2daa7e9e2a7b5f422dae661a1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27 lines \u00D7 4): 2015/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb:16-42 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb:16-42 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb:16-42 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb:16-42 \u2014 before extracting anything, compare \u00602015/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb\u0060 and \u00602016/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"abf8b303b6aefacdf3dd325f0a0726b249a522adcdce5f374057c8d61b19877b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:360-383 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:360-383 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:360-383 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:360-383 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 267 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"45de7d9d2e16d1b59a38d0dafae8c62e7023d068ade01bd68d7e04a8c59d7620"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 4): 2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:206-231 | 2016/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:206-231 | 2017/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:206-231 | 2018/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:206-231 \u2014 before extracting anything, compare \u00602015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs\u0060 and \u00602016/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 123 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"25101822169a9e1062ccf0c1f4b9089d7174df70618296b7e660e72ce8c81284"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 4): 2015/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs:38-63 | 2016/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs:38-63 | 2017/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs:38-63 | 2018/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs:38-63 \u2014 before extracting anything, compare \u00602015/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs\u0060 and \u00602016/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 98 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"45b3999eb226590efd269b1c58b12c03de5bb75ae9ea4f5e288bb68be920cd6b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 4): 2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:136-161 | 2016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:136-161 | 2017/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:136-161 | 2018/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:136-161 \u2014 before extracting anything, compare \u00602015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs\u0060 and \u00602016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 115 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d2ebbba38674f3c968901e41d4e7a79225ac4e316a4b9d10cc89369bb58f8c9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24\u201327 lines \u00D7 3): 2015/Case.Directionality/Case.Directionality/Entry/CmdMain.vb:27-50 | 2015/Case.ImageToDraftingView/Case.ImageToDraftingView/Entry/CmdMain.vb:26-49 | 2015/Case.LineChanger/Case.LineChanger/Entry/CmdMain.vb:20-46 \u2014 before extracting anything, compare \u00602015/Case.Directionality/Case.Directionality/Entry/CmdMain.vb\u0060 and \u00602015/Case.ImageToDraftingView/Case.ImageToDraftingView/Entry/CmdMain.vb\u0060 as WHOLE FILES: 97% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. 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":"2015/Case.Directionality/Case.Directionality/Entry/CmdMain.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"97c920bb453ec2bb3ceb0608d59523a225cc2216414d570d3201d53b9a77ec46"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 3): 2015/Case.ViewCreator/Case.ViewCreator/Classes/Entry/cmd.cs:29-54 | 2016/Case.ViewCreator/Case.ViewCreator/Classes/Entry/cmd.cs:29-54 | 2017/Case.ViewCreator/Case.ViewCreator/Classes/Entry/cmd.cs:29-54 \u2014 before extracting anything, compare \u00602015/Case.ViewCreator/Case.ViewCreator/Classes/Entry/cmd.cs\u0060 and \u00602016/Case.ViewCreator/Case.ViewCreator/Classes/Entry/cmd.cs\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Classes/Entry/cmd.cs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"401e8267d48f9fcd42666e93c5a85c35fec151b931dadfe7b010af4ca4f37707"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27 lines \u00D7 3): Case.AppsRibbon.2017/Entry/AppMain.vb:356-382 | Case.AppsRibbon.2018/Entry/AppMain.vb:356-382 | Case.AppsRibbon/Entry/AppMain.vb:356-382 \u2014 before extracting anything, compare \u0060Case.AppsRibbon.2017/Entry/AppMain.vb\u0060 and \u0060Case.AppsRibbon.2018/Entry/AppMain.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 148 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2017/Entry/AppMain.vb"},"region":{"startLine":356}}}],"partialFingerprints":{"codehealthFindingId/v1":"eef9748c995f8d4feaa4fb69a47135b90f4e5788d52561dd4bef7685245f9578"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24\u201327 lines \u00D7 3): 2016/Case.Directionality/Case.Directionality/Entry/CmdMain.vb:27-50 | 2016/Case.ImageToDraftingView/Case.ImageToDraftingView/Entry/CmdMain.vb:26-49 | 2016/Case.LineChanger/Case.LineChanger/Entry/CmdMain.vb:20-46 \u2014 before extracting anything, compare \u00602016/Case.Directionality/Case.Directionality/Entry/CmdMain.vb\u0060 and \u00602016/Case.ImageToDraftingView/Case.ImageToDraftingView/Entry/CmdMain.vb\u0060 as WHOLE FILES: 97% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. 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":"2016/Case.Directionality/Case.Directionality/Entry/CmdMain.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b5920fdfad345885a021e688cdebef901e7f887cae215eff01e579e5cc28558"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24\u201327 lines \u00D7 3): 2017/Case.Directionality/Case.Directionality/Entry/CmdMain.vb:27-50 | 2017/Case.ImageToDraftingView/Case.ImageToDraftingView/Entry/CmdMain.vb:26-49 | 2017/Case.LineChanger/Case.LineChanger/Entry/CmdMain.vb:20-46 \u2014 before extracting anything, compare \u00602017/Case.Directionality/Case.Directionality/Entry/CmdMain.vb\u0060 and \u00602017/Case.ImageToDraftingView/Case.ImageToDraftingView/Entry/CmdMain.vb\u0060 as WHOLE FILES: 97% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. 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":"2017/Case.Directionality/Case.Directionality/Entry/CmdMain.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"75370975ed417dad2c0082995bc8e87c7bc73e59d34346c4a1cdf074cc53369d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24\u201327 lines \u00D7 3): 2018/Case.Directionality/Case.Directionality/Entry/CmdMain.vb:27-50 | 2018/Case.ImageToDraftingView/Case.ImageToDraftingView/Entry/CmdMain.vb:26-49 | 2018/Case.LineChanger/Case.LineChanger/Entry/CmdMain.vb:20-46 \u2014 before extracting anything, compare \u00602018/Case.Directionality/Case.Directionality/Entry/CmdMain.vb\u0060 and \u00602018/Case.ImageToDraftingView/Case.ImageToDraftingView/Entry/CmdMain.vb\u0060 as WHOLE FILES: 97% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. 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":"2018/Case.Directionality/Case.Directionality/Entry/CmdMain.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"9784e899d32801e931fedc89fa73b2e973f59b33674ab64421e5e86cbb23d300"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27 lines \u00D7 2): 2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:509-535 | 2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:509-535 \u2014 before extracting anything, compare \u00602015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb\u0060 and \u00602016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 364 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":509}}}],"partialFingerprints":{"codehealthFindingId/v1":"f09d3a52a569b186c698c3304d00bc7d50bde3de73e5069d51bf302dad387de0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25\u201326 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb:32-57 | 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb:34-58 | 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F3.vb:32-56 | 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb:32-56 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb\u0060 and \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 67 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bc3cb1dfd1566eb6e6a026902cad9d15cc32e8a3751b265a2d86fac39e2c088"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb:267-291 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb:267-291 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb:267-291 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb:267-291 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 81 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cca3752e75d246b0ce79c6cc785b05f3a0dc2ebee1894225eb40debb744d687"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:735-760 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:735-760 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:735-760 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:735-760 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 281 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":735}}}],"partialFingerprints":{"codehealthFindingId/v1":"db3936d561c2743e43f14b16cc9bac548f0fdc6a881561816713854760f38d88"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 4): 2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:414-438 | 2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:414-438 | 2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:414-438 | 2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:414-438 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb\u0060 and \u00602016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 373 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"05011ed6850b2f4a085c7e46f8e999255f644c6d78ddc3bb9407dcca2e3a656c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:421-446 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:421-446 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:421-446 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:421-446 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 221 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:421\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":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":421}}}],"partialFingerprints":{"codehealthFindingId/v1":"77b26ca0a165e9edd14d810dcdae70e2e684701e6249a9f80e8b14e3e27f5ecb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:207-232 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:207-232 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:207-232 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:207-232 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 267 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"a45871fd00251602c8956784ea799b0c3a0a5dcdcc9206aab273ca7a62455486"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 4): 2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb:94-119 | 2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb:94-119 | 2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb:94-119 | 2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb:94-119 \u2014 before extracting anything, compare \u00602015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb\u0060 and \u00602016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"e42409e3df2107fb760de7e88cbe8af1345f64547a4c8dc9e96f5f9a6735209a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 4): 2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:213-238 | 2016/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:213-238 | 2017/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:213-238 | 2018/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:208-233 \u2014 before extracting anything, compare \u00602015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb\u0060 and \u00602016/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 173 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8acd6b8eb0746e4d09dded232a598bd3f9e3571e7c2e70ae2491402c9b0cf59"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 4): 2015/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:101-125 | 2016/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:101-125 | 2017/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:101-125 | 2018/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:101-125 \u2014 before extracting anything, compare \u00602015/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs\u0060 and \u00602016/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 83 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e28ace4511391bccacee03d1950e7d8e6c17d2446742d3f57252f091e6af7be"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 4): 2015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:160-184 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:160-184 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:160-184 | 2018/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:160-184 \u2014 before extracting anything, compare \u00602015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs\u0060 and \u00602016/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 147 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ff9c9ce78ae0dfb6b05d7c44ec67198d5cf422dbc19866bc53613ffcff21ddd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 4): 2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:200-225 | 2016/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:200-225 | 2017/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:200-225 | 2018/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:200-225 \u2014 before extracting anything, compare \u00602015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb\u0060 and \u00602016/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 245 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5bc20c8d6157176c09e20832c746ab664c7d392813e571b1a55c992c4dfee56"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 4): 2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:146-171 | 2016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:146-171 | 2017/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:146-171 | 2018/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:146-171 \u2014 before extracting anything, compare \u00602015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb\u0060 and \u00602016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 93 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8d7b278f6f64293d5ad25a13b28b58d76779f6edeb6bf07999848d5d5d28c7a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 4): 2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/cmd.vb:22-47 | 2016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/cmd.vb:22-47 | 2017/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/cmd.vb:22-47 | 2018/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/cmd.vb:22-47 \u2014 before extracting anything, compare \u00602015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/cmd.vb\u0060 and \u00602016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/cmd.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/cmd.vb"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cdc9b06c2e599850b19ea1f903055e2a54df0ca444427f370d2b7bbf6f64abf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25\u201326 lines \u00D7 4): 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb:32-57 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb:34-58 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F3.vb:32-56 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb:32-56 \u2014 before extracting anything, compare \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 67 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"f22cb81a347aa34de63ddd22815525ddc0ca37c5af4286c5d5327c77a9ab7b95"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25\u201326 lines \u00D7 4): 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb:32-57 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb:34-58 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F3.vb:32-56 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb:32-56 \u2014 before extracting anything, compare \u00602017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb\u0060 and \u00602017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 67 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f98c733fafd2e29ef41f50d89ac375fba72c6f5d7f7a84c5861e896839b10e2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 4): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:647-671 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:647-671 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:647-671 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:647-671 \u2014 before extracting anything, compare \u00602015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb\u0060 and \u00602016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 500 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":647}}}],"partialFingerprints":{"codehealthFindingId/v1":"815e22e101e7b205c99da33a549f0ee30f19cc833f9dc59fe380b1882d7a1bf9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:279-303 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:279-303 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:279-303 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:279-303 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 247 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":279}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5dccddeca3ce54e9637a0864ffafa367fa6a63e531806da47f7273ee6078daf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb:84-108 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb:84-108 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb:84-108 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb:84-108 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc42e3ebf850ecb624015f914ba6db6045c16eebe9cb528d90d9b66b3463f496"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:182-206 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:182-206 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:182-206 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:182-206 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 169 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"23974d42ba349d3153f9e8bb5ca6665af0673bd46ff2c766430b546b926ce0a2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 4): 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:378-401 | 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:378-401 | 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:378-401 | 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:378-401 \u2014 before extracting anything, compare \u00602015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 and \u00602016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 as WHOLE FILES: this scan already matched 17 separate duplicated blocks between them, totalling at least 421 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":378}}}],"partialFingerprints":{"codehealthFindingId/v1":"6887721fa2bdbcb3383fd7d5f5d82126ad470bb02a140781f0a3b27b85b64812"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 4): 2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:125-148 | 2016/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:125-148 | 2017/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:125-148 | 2018/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:125-148 \u2014 before extracting anything, compare \u00602015/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs\u0060 and \u00602016/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 106 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"7744ac13da2da2a170ac8f06edd7d0256618f4396f0b681be369bdfb49912262"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 3): 2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:120-144 | 2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:120-144 | 2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:120-144 \u2014 before extracting anything, compare \u00602015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb\u0060 and \u00602016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 364 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bb83c9b5798280cbbd8e930620c3ded1a099b1f5c0ff4fa0c99a1d6bf90bcff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23\u201324 lines \u00D7 25): 2015/Case.ApplySysOrient/API/clsAPI.cs:75-98 | 2015/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs:75-98 | 2015/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs:75-98 | 2015/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs:75-98 | 2015/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs:76-98 | 2015/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs:75-98 | 2015/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs:75-98 | 2015/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs:75-98 | 2016/Case.ApplySysOrient/API/clsAPI.cs:75-98 | 2016/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs:75-98 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs:75-98 | 2016/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs:75-98 | 2016/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs:76-98 | 2016/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs:75-98 | 2016/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs:75-98 | 2016/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs:75-98 | 2017/Case.ApplySysOrient/API/clsAPI.cs:75-98 | 2017/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs:75-98 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs:75-98 | 2017/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs:75-98 | 2017/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs:76-98 | 2017/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs:75-98 | 2017/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs:75-98 | 2017/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs:75-98 | 2018/Case.ApplySysOrient/API/clsAPI.cs:75-98 \u2014 before extracting anything, compare \u00602015/Case.ApplySysOrient/API/clsAPI.cs\u0060 and \u00602015/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 122 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. 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":"2015/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4bd412a13e3639bc429b993655e66b1dc4a7d0fde4f26d218c15919070aeb85"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb:154-177 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb:154-177 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb:154-177 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb:154-177 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"60a0b08d2f9e47c4f9ae2ecf3882acda8f83d5f077f45f7ad9bb006281ddb0ee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 4): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:490-513 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:490-513 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:490-513 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:490-513 \u2014 before extracting anything, compare \u00602015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb\u0060 and \u00602016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 500 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"681b38923d641b876d42e801c0ae8cafd4fd5eb0407f1feb5a4f90e56ddc9589"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 4): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:531-554 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:531-554 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:531-554 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:531-554 \u2014 before extracting anything, compare \u00602015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb\u0060 and \u00602016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 500 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":531}}}],"partialFingerprints":{"codehealthFindingId/v1":"60880399df42b9d1d998df4a5a5cea4bcd4f8309bbe47e009a23925be293fa92"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 4): 2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:116-139 | 2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:116-139 | 2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:116-139 | 2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:116-139 \u2014 before extracting anything, compare \u00602015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 149 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"53852bf98892f5e03746bf31f4b76f8419bb440f3625258de0d5baa086c5418a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb:259-282 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb:259-282 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb:259-282 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb:259-282 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 110 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1c534c997b3d6b999028d61033da6078e4aef6be788b13ae03796b080d82c4a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_AddFamily.vb:35-58 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_AddFamily.vb:35-58 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_AddFamily.vb:35-58 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_AddFamily.vb:35-58 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_AddFamily.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_AddFamily.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_AddFamily.vb"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"55b67e257cdc6f7b21b0bf2005303ac4a60d9071cbc872e526daf1e84aba3086"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb:36-59 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb:36-59 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb:36-59 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb:36-59 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 62 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1be9f0b5f6d36d2c9f3c4291fd9d5f813ce51f8b64f243564fbd428aba9ef4d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 4): 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:194-216 | 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:194-216 | 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:194-216 | 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:194-216 \u2014 before extracting anything, compare \u00602015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 and \u00602016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 as WHOLE FILES: this scan already matched 17 separate duplicated blocks between them, totalling at least 421 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"d97591a24834baf7a0a6fc7aa04f41f7444b40a73f5c89acdb87ea1f75bc4829"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 4): 2015/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs:207-229 | 2016/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs:207-229 | 2017/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs:207-229 | 2018/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs:207-229 \u2014 before extracting anything, compare \u00602015/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs\u0060 and \u00602016/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"8638faf8887fedfb6e237816505c832b6a8731b5f31b63c44168b2e5ddaa0916"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 4): 2015/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs:36-58 | 2016/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs:36-58 | 2017/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs:36-58 | 2018/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs:36-58 \u2014 before extracting anything, compare \u00602015/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs\u0060 and \u00602016/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad72abe6523d6d05deefe772b68efa59859c73369e96d2cd9a9475fc088c5f3c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 12): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb:245-267 | 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb:199-221 | 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2514.vb:110-133 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb:245-267 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb:199-221 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2514.vb:110-133 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb:245-267 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb:199-221 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2514.vb:110-133 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb:245-267 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb:199-221 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2514.vb:110-133 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb\u0060 and \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 79 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b48ddbb1b6f12b84e13dd5f68c25c597451c55d83aef30c22d06cfd4d03e3e7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22\u201323 lines \u00D7 12): 2015/Case.ApplySysOrient/Data/clsSettings.cs:146-167 | 2015/Case.ApplySysOrient/Data/clsSettings.cs:272-293 | 2015/Case.ApplySysOrient/Data/clsSettings.cs:336-358 | 2016/Case.ApplySysOrient/Data/clsSettings.cs:146-167 | 2016/Case.ApplySysOrient/Data/clsSettings.cs:272-293 | 2016/Case.ApplySysOrient/Data/clsSettings.cs:336-358 | 2017/Case.ApplySysOrient/Data/clsSettings.cs:146-167 | 2017/Case.ApplySysOrient/Data/clsSettings.cs:272-293 | 2017/Case.ApplySysOrient/Data/clsSettings.cs:336-358 | 2018/Case.ApplySysOrient/Data/clsSettings.cs:146-167 | 2018/Case.ApplySysOrient/Data/clsSettings.cs:272-293 | 2018/Case.ApplySysOrient/Data/clsSettings.cs:336-358 \u2014 before extracting anything, compare \u00602015/Case.ApplySysOrient/Data/clsSettings.cs\u0060 and \u00602016/Case.ApplySysOrient/Data/clsSettings.cs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 288 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.ApplySysOrient/Data/clsSettings.cs:146\u0060 it runs out through the closing brace of the declaration holding it and carries on into the declaration that follows \u2014 the window is the tail of one member plus the head of the next, so no call can be substituted for those exact lines, and the smallest declaration that contains all of them is the type they sit in. The repeated unit is the member each site sits in: where those members\u0027 bodies are the same, move one whole member to the shared location and have the others delegate to it; where the copies are a run of near-identical overloads or wrappers that differ only in their signatures, the repetition IS the run \u2014 a one-line delegation has no helper inside it to lift \u2014 so generate the run from the set it enumerates, or accept it and keep each member\u0027s own documentation with it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a02cec2a5d66ba223e205dc595ffce048846f9c120f9ecfe931f5ac14c7ec4b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201323 lines \u00D7 8): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:443-463 | 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:512-534 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:443-463 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:512-534 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:443-463 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:512-534 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:443-463 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:512-534 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 467 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. 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. \u2605 These copies have DRIFTED, and that is worth reading before extracting anything: just after the matched lines, \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:534\u0060 calls \u0060clsConfig\u0060, \u0060UpdateConfigFile\u0060 and \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:463\u0060 does not \u2014 after which the two agree again for 3 more lines. One of those two behaviours is the intended one and the other is what a copy-paste left behind, so decide which BEFORE unifying them: extracting the shared part will silently settle it, and if the copy that skips the call is the wrong one, that bug is already live."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":443}}}],"partialFingerprints":{"codehealthFindingId/v1":"e43beff93e28459f13fc41f8851d8e9f5791c2ed6d079f6027d707a1c2c8a229"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 8): 2015/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs:130-151 | 2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs:136-157 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs:130-151 | 2016/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs:136-157 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs:130-151 | 2017/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs:136-157 | 2018/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs:130-151 | 2018/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs:136-157 \u2014 before extracting anything, compare \u00602015/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs\u0060 and \u00602016/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 61 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs:130\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"e24a754ec32d117dacf77d8a0838d38e0e278af4143c988d536697ff758826c3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb:146-168 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb:146-168 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb:146-168 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb:146-168 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"242bf6734793f9354345461316b0f49fa97553a95b3305ac4400997bd4343045"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 4): 2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:332-354 | 2016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:332-354 | 2017/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:332-354 | 2018/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:332-354 \u2014 before extracting anything, compare \u00602015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb\u0060 and \u00602016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 215 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"49d30bb231726ebca7cc5c5b484f7f41f6a85a560a45754a6c25d192d0b02a60"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 4): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:538-560 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:538-560 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:538-560 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:538-560 \u2014 before extracting anything, compare \u00602015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 172 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":538}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a83307458d04cf588a7e78541486618cf098165182200ccf7ed8d155fcd0269"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 4): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:423-445 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:423-445 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:423-445 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:423-445 \u2014 before extracting anything, compare \u00602015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb\u0060 and \u00602016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 500 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":423}}}],"partialFingerprints":{"codehealthFindingId/v1":"1417c9560f76da863e670030aac6040fbd680681a76f03cbf9ff1f1f2c897376"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 4): 2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:36-58 | 2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:36-58 | 2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:36-58 | 2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:36-58 \u2014 before extracting anything, compare \u00602015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb\u0060 and \u00602016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 201 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"64b1d27e0069a34ec39554b2a31fddf1b7385de2a3dbf85a70d64d713372fd9b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 4): 2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:41-63 | 2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:41-63 | 2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:41-63 | 2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:41-63 \u2014 before extracting anything, compare \u00602015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb\u0060 and \u00602016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 264 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"b68955b5e44cbdc5f861795f2209155ad1b4b75ca164a1c1e4eed4a0748366c6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:359-381 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:359-381 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:359-381 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:359-381 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 330 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":359}}}],"partialFingerprints":{"codehealthFindingId/v1":"2786e07163b7f584146c85bead85ac5a8876ca00ec90ec92da315db8f862462c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:443-465 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:443-465 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:443-465 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:443-465 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 330 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":443}}}],"partialFingerprints":{"codehealthFindingId/v1":"eec6610a3117ae46ebdd85793297be643e06c4145e0a0d6700ee7ab738751479"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 4): 2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:140-162 | 2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:140-162 | 2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:140-162 | 2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:140-162 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb\u0060 and \u00602016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 373 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"758f376d53e58c55f55be6c31cfea68554ab8a42f35c43eb288aa20cbaa44175"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 4): 2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:70-92 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:70-92 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:70-92 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:70-92 \u2014 before extracting anything, compare \u00602015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb\u0060 and \u00602016/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 323 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ab0569971e07e8aa8d7abd690ea9cf403b77f079f4432099c2530f6c3b5ada3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 4): 2015/Case.ApplySysOrient/Data/clsSettings.cs:77-98 | 2016/Case.ApplySysOrient/Data/clsSettings.cs:77-98 | 2017/Case.ApplySysOrient/Data/clsSettings.cs:77-98 | 2018/Case.ApplySysOrient/Data/clsSettings.cs:77-98 \u2014 before extracting anything, compare \u00602015/Case.ApplySysOrient/Data/clsSettings.cs\u0060 and \u00602016/Case.ApplySysOrient/Data/clsSettings.cs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 288 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa3f812bdfb6576e622dea0eca1f0ad33368d50a48132c2a06505e3711688558"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 4): 2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:98-120 | 2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:98-120 | 2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:98-120 | 2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:98-120 \u2014 before extracting anything, compare \u00602015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb\u0060 and \u00602016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 260 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc0feb5d920363c7fabc57cf33eb1b0fa616090347d3b63bd284a28487453f4c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 4): 2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:471-493 | 2016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:471-493 | 2017/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:471-493 | 2018/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:471-493 \u2014 before extracting anything, compare \u00602015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb\u0060 and \u00602016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 191 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":471}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddd5a1bbac0cb250958db8935692b76f69e41711d2fba49a7ff1e72c957bdc36"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 4): 2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:25-46 | 2016/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:25-46 | 2017/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:25-46 | 2018/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:24-45 \u2014 before extracting anything, compare \u00602015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs\u0060 and \u00602016/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 264 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"22aaa02ce040515ac3685443e87629f8d1700540aeab2800d894056f426b1b90"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 4): 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:131-152 | 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:131-152 | 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:131-152 | 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:131-152 \u2014 before extracting anything, compare \u00602015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 and \u00602016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 as WHOLE FILES: this scan already matched 17 separate duplicated blocks between them, totalling at least 421 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"274da91a62e1c9dad5d81284a2b4c72385dc962e1ef679916888f524035c7a6d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 4): 2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:182-203 | 2016/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:182-203 | 2017/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:182-203 | 2018/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:182-203 \u2014 before extracting anything, compare \u00602015/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs\u0060 and \u00602016/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 106 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"10df8519dcb6fcb18e0aa5d6e3db98d3fcf31d6dc08ff67c347826586723ba2f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 4): 2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:211-232 | 2016/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:211-232 | 2017/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:211-232 | 2018/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:211-232 \u2014 before extracting anything, compare \u00602015/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs\u0060 and \u00602016/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 106 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2e6f46bea2289ac36808c5af208eb47dd2d5708f4ddf7ad094f175810831898"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 4): 2015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:131-152 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:131-152 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:131-152 | 2018/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:131-152 \u2014 before extracting anything, compare \u00602015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs\u0060 and \u00602016/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 147 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"8478942781fca266c6aa306b33caadb0917aad44a6b5c894b6b521506f618a82"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 4): 2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:39-61 | 2016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:39-61 | 2017/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:39-61 | 2018/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:39-61 \u2014 before extracting anything, compare \u00602015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb\u0060 and \u00602016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 93 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2442ce956ea704a15ec474518e416501a4a38373054f1738bd673dc2cb2493c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 3): 2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:163-185 | 2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:163-185 | 2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:163-185 \u2014 before extracting anything, compare \u00602015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb\u0060 and \u00602016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 364 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc2b08681fb294c544814869e25b884707bc5ad091b986169b990f67895167da"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 3): Case.AppsRibbon.2017/Entry/AppMain.vb:277-299 | Case.AppsRibbon.2018/Entry/AppMain.vb:277-299 | Case.AppsRibbon/Entry/AppMain.vb:277-299 \u2014 before extracting anything, compare \u0060Case.AppsRibbon.2017/Entry/AppMain.vb\u0060 and \u0060Case.AppsRibbon.2018/Entry/AppMain.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 148 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2017/Entry/AppMain.vb"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"47c12ad897026e758a1b6df4ccfc69664ae8a758998aa98d14bc730a589f55ca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 57): 2015/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb:62-83 | 2015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/API/clsUsage.vb:62-83 | 2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/API/clsUsage.vb:62-83 | 2015/Case.Directionality/Case.Directionality/API/clsUsage.vb:62-83 | 2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/API/clsUsage.vb:62-83 | 2015/Case.Export.Families/Case.Export.Families/API/clsUsage.vb:62-83 | 2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/API/clsUsage.vb:62-83 | 2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/API/clsUsage.vb:62-83 | 2015/Case.ImageToDraftingView/Case.ImageToDraftingView/API/clsUsage.vb:62-83 | 2015/Case.LightingLayout/Case.LightingLayout/API/clsUsage.vb:62-83 | 2015/Case.LineChanger/Case.LineChanger/API/clsUsage.vb:62-83 | 2015/Case.ModeledRoomTags/Case.ModeledRoomTags/API/clsUsage.vb:62-83 | 2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/API/clsUsage.vb:62-83 | 2015/Case.RevClouds/Case.RevClouds/API/clsUsage.vb:62-83 | 2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/API/clsUsage.vb:62-83 | 2015/Case.RoomSync/Case.RoomSync/API/clsUsage.vb:62-83 | 2015/Case.SharedParameters/Case.SharedParameters/API/clsUsage.vb:62-83 | 2015/Case.ViewTemplates/Case.ViewTemplates/API/clsUsage.vb:62-83 | 2015/Case.ViewportReporting/Case.ViewportReporting/API/clsUsage.vb:62-83 | 2016/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb:62-83 | 2016/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/API/clsUsage.vb:62-83 | 2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/API/clsUsage.vb:62-83 | 2016/Case.Directionality/Case.Directionality/API/clsUsage.vb:62-83 | 2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/API/clsUsage.vb:62-83 | 2016/Case.Export.Families/Case.Export.Families/API/clsUsage.vb:62-83 | 2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/API/clsUsage.vb:62-83 | 2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/API/clsUsage.vb:62-83 | 2016/Case.ImageToDraftingView/Case.ImageToDraftingView/API/clsUsage.vb:62-83 | 2016/Case.LightingLayout/Case.LightingLayout/API/clsUsage.vb:62-83 | 2016/Case.LineChanger/Case.LineChanger/API/clsUsage.vb:62-83 | 2016/Case.ModeledRoomTags/Case.ModeledRoomTags/API/clsUsage.vb:62-83 | 2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/API/clsUsage.vb:62-83 | 2016/Case.RevClouds/Case.RevClouds/API/clsUsage.vb:62-83 | 2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/API/clsUsage.vb:62-83 | 2016/Case.RoomSync/Case.RoomSync/API/clsUsage.vb:62-83 | 2016/Case.SharedParameters/Case.SharedParameters/API/clsUsage.vb:62-83 | 2016/Case.ViewTemplates/Case.ViewTemplates/API/clsUsage.vb:62-83 | 2016/Case.ViewportReporting/Case.ViewportReporting/API/clsUsage.vb:62-83 | 2017/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb:62-83 | 2017/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/API/clsUsage.vb:62-83 | 2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/API/clsUsage.vb:62-83 | 2017/Case.Directionality/Case.Directionality/API/clsUsage.vb:62-83 | 2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/API/clsUsage.vb:62-83 | 2017/Case.Export.Families/Case.Export.Families/API/clsUsage.vb:62-83 | 2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/API/clsUsage.vb:62-83 | 2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/API/clsUsage.vb:62-83 | 2017/Case.ImageToDraftingView/Case.ImageToDraftingView/API/clsUsage.vb:62-83 | 2017/Case.LightingLayout/Case.LightingLayout/API/clsUsage.vb:62-83 | 2017/Case.LineChanger/Case.LineChanger/API/clsUsage.vb:62-83 | 2017/Case.ModeledRoomTags/Case.ModeledRoomTags/API/clsUsage.vb:62-83 | 2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/API/clsUsage.vb:62-83 | 2017/Case.RevClouds/Case.RevClouds/API/clsUsage.vb:62-83 | 2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/API/clsUsage.vb:62-83 | 2017/Case.RoomSync/Case.RoomSync/API/clsUsage.vb:62-83 | 2017/Case.SharedParameters/Case.SharedParameters/API/clsUsage.vb:62-83 | 2017/Case.ViewTemplates/Case.ViewTemplates/API/clsUsage.vb:62-83 | 2017/Case.ViewportReporting/Case.ViewportReporting/API/clsUsage.vb:62-83 \u2014 before extracting anything, compare \u00602015/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb\u0060 and \u00602015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/API/clsUsage.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 70 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"c246ac06d825df22bdcda6d21dbf84ea34a92e98fffaaa459b15508ac7265a27"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 12): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:44-65 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:40-61 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:453-474 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:44-65 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:40-61 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:453-474 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:44-65 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:40-61 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:453-474 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:44-65 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:40-61 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:453-474 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb\u0060 and \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 92 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"d63bcc75f7466ad05f41cdb0ce65e1166612f0c2b0fc9c8c306e511d9a272a4f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201322 lines \u00D7 8): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb:39-60 | 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F3.vb:39-59 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb:39-60 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F3.vb:39-59 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb:39-60 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F3.vb:39-59 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb:39-60 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F3.vb:39-59 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb\u0060 and \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F3.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 89 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb:39\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":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4e9a2e4da6852ff2db63252f0c191609fddf4df59f28299343c690a75a90f50"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 8): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb:41-61 | 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb:39-59 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb:41-61 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb:39-59 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb:41-61 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb:39-59 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb:41-61 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb:39-59 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb\u0060 and \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 123 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb:41\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":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"a165c8e842b7e066417151367aaa3f0461e1adb1b1b6958258655616bf7c5848"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201322 lines \u00D7 7): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb:29-50 | 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb:31-51 | 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F3.vb:29-49 | 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb:29-49 | 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb:32-53 | 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb:29-50 | 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2514.vb:29-50 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb\u0060 and \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 67 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place. 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":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"c898f18f16d00cc34e5b3f2609393b7c6f954ff8f91c635eacc1aeffc27ff42f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201322 lines \u00D7 7): 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb:29-50 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb:31-51 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F3.vb:29-49 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb:29-49 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb:32-53 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb:29-50 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2514.vb:29-50 \u2014 before extracting anything, compare \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 67 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place. 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":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"2923601cd30e9109bbbe446d7c3924da0167df0e8656e2ec1f1c33aaba6abbcc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201322 lines \u00D7 7): 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb:29-50 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb:31-51 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F3.vb:29-49 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb:29-49 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb:32-53 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb:29-50 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2514.vb:29-50 \u2014 before extracting anything, compare \u00602017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb\u0060 and \u00602017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 67 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place. 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":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddc28295a3baefed93aab7f2d83cedd7bae15c9b32f0c3db523d9cd7156c77ce"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 4): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:149-170 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:149-170 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:149-170 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:149-170 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 383 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"3413fa660505da252ca8c94cf585f4a5dc1190e9eef2d808b633ab69a764c9f1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 4): 2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:149-170 | 2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:149-170 | 2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:149-170 | 2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb:149-170 \u2014 before extracting anything, compare \u00602015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 149 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b8c0539f7bd4c6fd119c7fc395335691d3da168500c5089044378f00e5ecc3e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:32-53 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:32-53 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:32-53 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:32-53 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 467 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9061bbdab1382f2033717dadb2f0737eb32b1c3b16ac1a876ebd2260de29e31"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:388-407 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:388-407 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:388-407 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:388-407 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 267 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ea23ef99887910d0a15c249277f4204eb58837595b56e3641c27419afffc464"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 4): 2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:358-379 | 2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:358-379 | 2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:358-379 | 2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:358-379 \u2014 before extracting anything, compare \u00602015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb\u0060 and \u00602016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 260 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":358}}}],"partialFingerprints":{"codehealthFindingId/v1":"21ed2a8c5e23b71deef3c5bf04054f81b4098ecd4335f2165931743d85d700e9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 4): 2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:390-411 | 2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:390-411 | 2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:390-411 | 2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:390-411 \u2014 before extracting anything, compare \u00602015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb\u0060 and \u00602016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 260 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":390}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5d6acee3058b8bec7ed62c117502321c91fba2c7f02ced70f6ee2d5974c53ba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 4): 2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:511-532 | 2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:511-532 | 2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:511-532 | 2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:511-532 \u2014 before extracting anything, compare \u00602015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb\u0060 and \u00602016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 260 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":511}}}],"partialFingerprints":{"codehealthFindingId/v1":"dab50e7aae700218460e37f8aff9280d9358ff94fcca14f269ce172c7de3a32b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 4): 2015/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs:115-134 | 2016/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs:115-134 | 2017/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs:115-134 | 2018/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs:115-134 \u2014 before extracting anything, compare \u00602015/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs\u0060 and \u00602016/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe34abbb2b4f69701a32b7f946c23c66da61999c0beb3d8beb2e512fc8f40825"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 3): Case.AppsRibbon.2017/Entry/AppMain.vb:245-266 | Case.AppsRibbon.2018/Entry/AppMain.vb:245-266 | Case.AppsRibbon/Entry/AppMain.vb:245-266 \u2014 before extracting anything, compare \u0060Case.AppsRibbon.2017/Entry/AppMain.vb\u0060 and \u0060Case.AppsRibbon.2018/Entry/AppMain.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 148 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2017/Entry/AppMain.vb"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"b715cd9a5697e7f9f03a245f180e09d5c87caefe5fa218ea4ef81488f9ff198e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 3): 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb:32-50 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb:29-47 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2514.vb:29-47 \u2014 before extracting anything, compare \u00602018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb\u0060 and \u00602018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 76 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"33f90500f91b09ffb443b426dd6fbcb086af60944a8fa85b1672ffa62a2dc02c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201321 lines \u00D7 8): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:60-80 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:114-132 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:60-80 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:114-132 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:60-80 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:114-132 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:60-80 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:114-132 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 383 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. 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":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"5200478597e19c83112862c448142f196b643954eea502cff61354706af2ea0d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201321 lines \u00D7 8): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:205-224 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:286-306 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:205-224 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:286-306 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:205-224 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:286-306 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:205-224 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:286-306 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 685 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. 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":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ea586131b43af3149a1f73294f881bc6859547071a07ae325e88ad9a1ede518"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 4): 2015/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb:101-121 | 2016/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb:101-121 | 2017/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb:101-121 | 2018/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb:101-121 \u2014 before extracting anything, compare \u00602015/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb\u0060 and \u00602016/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"14cf97a9c2f72070855681a12f12e19ffb7b6bd11c89a16ac996f003ca695d87"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 4): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONGet.vb:17-37 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONGet.vb:17-37 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONGet.vb:17-37 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONGet.vb:17-37 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONGet.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONGet.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONGet.vb"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ec175fc3954b9243bf7549e58bec3956a28a4828d740abc014cf25c1e9d9653"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 4): 2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb:145-165 | 2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb:145-165 | 2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb:145-165 | 2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb:145-165 \u2014 before extracting anything, compare \u00602015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb\u0060 and \u00602016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 70 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ab7d750c625b3f125da0a47f73541a8efe2ae485659e26eec4775eed86d8895"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 4): 2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:248-268 | 2016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:248-268 | 2017/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:248-268 | 2018/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:248-268 \u2014 before extracting anything, compare \u00602015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb\u0060 and \u00602016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 191 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce8324cb27ee5ad83e460aa8822f81841c45f6201c874410de6cdd337e01c254"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 4): 2015/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:68-87 | 2016/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:68-87 | 2017/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:68-87 | 2018/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:68-87 \u2014 before extracting anything, compare \u00602015/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs\u0060 and \u00602016/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 83 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"af86fa5c353ee496f7330531a2e6df3b14c660d7f9d6301f9f91d67d95035936"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 4): 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:301-319 | 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:301-319 | 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:301-319 | 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:301-319 \u2014 before extracting anything, compare \u00602015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 and \u00602016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 as WHOLE FILES: this scan already matched 17 separate duplicated blocks between them, totalling at least 421 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:301\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":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"affe1b0dd595de147916f172c8e8669f1f0ebb9e2f63dfebb8d5edb0a6372e66"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 4): 2015/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb:49-69 | 2016/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb:49-69 | 2017/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb:49-69 | 2018/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb:49-69 \u2014 before extracting anything, compare \u00602015/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb\u0060 and \u00602016/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5dc4c9383f3aae13975eb83d362f180e71dfede4b6608b52ef912f40faf5b79"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 57): 2015/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb:15-34 | 2015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/API/clsUsage.vb:15-34 | 2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/API/clsUsage.vb:15-34 | 2015/Case.Directionality/Case.Directionality/API/clsUsage.vb:15-34 | 2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/API/clsUsage.vb:15-34 | 2015/Case.Export.Families/Case.Export.Families/API/clsUsage.vb:15-34 | 2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/API/clsUsage.vb:15-34 | 2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/API/clsUsage.vb:15-34 | 2015/Case.ImageToDraftingView/Case.ImageToDraftingView/API/clsUsage.vb:15-34 | 2015/Case.LightingLayout/Case.LightingLayout/API/clsUsage.vb:15-34 | 2015/Case.LineChanger/Case.LineChanger/API/clsUsage.vb:15-34 | 2015/Case.ModeledRoomTags/Case.ModeledRoomTags/API/clsUsage.vb:15-34 | 2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/API/clsUsage.vb:15-34 | 2015/Case.RevClouds/Case.RevClouds/API/clsUsage.vb:15-34 | 2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/API/clsUsage.vb:15-34 | 2015/Case.RoomSync/Case.RoomSync/API/clsUsage.vb:15-34 | 2015/Case.SharedParameters/Case.SharedParameters/API/clsUsage.vb:15-34 | 2015/Case.ViewTemplates/Case.ViewTemplates/API/clsUsage.vb:15-34 | 2015/Case.ViewportReporting/Case.ViewportReporting/API/clsUsage.vb:15-34 | 2016/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb:15-34 | 2016/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/API/clsUsage.vb:15-34 | 2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/API/clsUsage.vb:15-34 | 2016/Case.Directionality/Case.Directionality/API/clsUsage.vb:15-34 | 2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/API/clsUsage.vb:15-34 | 2016/Case.Export.Families/Case.Export.Families/API/clsUsage.vb:15-34 | 2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/API/clsUsage.vb:15-34 | 2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/API/clsUsage.vb:15-34 | 2016/Case.ImageToDraftingView/Case.ImageToDraftingView/API/clsUsage.vb:15-34 | 2016/Case.LightingLayout/Case.LightingLayout/API/clsUsage.vb:15-34 | 2016/Case.LineChanger/Case.LineChanger/API/clsUsage.vb:15-34 | 2016/Case.ModeledRoomTags/Case.ModeledRoomTags/API/clsUsage.vb:15-34 | 2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/API/clsUsage.vb:15-34 | 2016/Case.RevClouds/Case.RevClouds/API/clsUsage.vb:15-34 | 2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/API/clsUsage.vb:15-34 | 2016/Case.RoomSync/Case.RoomSync/API/clsUsage.vb:15-34 | 2016/Case.SharedParameters/Case.SharedParameters/API/clsUsage.vb:15-34 | 2016/Case.ViewTemplates/Case.ViewTemplates/API/clsUsage.vb:15-34 | 2016/Case.ViewportReporting/Case.ViewportReporting/API/clsUsage.vb:15-34 | 2017/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb:15-34 | 2017/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/API/clsUsage.vb:15-34 | 2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/API/clsUsage.vb:15-34 | 2017/Case.Directionality/Case.Directionality/API/clsUsage.vb:15-34 | 2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/API/clsUsage.vb:15-34 | 2017/Case.Export.Families/Case.Export.Families/API/clsUsage.vb:15-34 | 2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/API/clsUsage.vb:15-34 | 2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/API/clsUsage.vb:15-34 | 2017/Case.ImageToDraftingView/Case.ImageToDraftingView/API/clsUsage.vb:15-34 | 2017/Case.LightingLayout/Case.LightingLayout/API/clsUsage.vb:15-34 | 2017/Case.LineChanger/Case.LineChanger/API/clsUsage.vb:15-34 | 2017/Case.ModeledRoomTags/Case.ModeledRoomTags/API/clsUsage.vb:15-34 | 2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/API/clsUsage.vb:15-34 | 2017/Case.RevClouds/Case.RevClouds/API/clsUsage.vb:15-34 | 2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/API/clsUsage.vb:15-34 | 2017/Case.RoomSync/Case.RoomSync/API/clsUsage.vb:15-34 | 2017/Case.SharedParameters/Case.SharedParameters/API/clsUsage.vb:15-34 | 2017/Case.ViewTemplates/Case.ViewTemplates/API/clsUsage.vb:15-34 | 2017/Case.ViewportReporting/Case.ViewportReporting/API/clsUsage.vb:15-34 \u2014 before extracting anything, compare \u00602015/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb\u0060 and \u00602015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/API/clsUsage.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 70 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"69fdf2545b3ad8e759e4363b940c20af3089174ccd00c75d8fd040cd72126767"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201320 lines \u00D7 25): 2015/Case.ApplySysOrient/API/clsAPI.cs:132-150 | 2015/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs:132-150 | 2015/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs:132-151 | 2015/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs:132-151 | 2015/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs:130-148 | 2015/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs:132-150 | 2015/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs:132-150 | 2015/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs:132-150 | 2016/Case.ApplySysOrient/API/clsAPI.cs:132-150 | 2016/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs:132-150 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs:132-151 | 2016/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs:132-151 | 2016/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs:130-148 | 2016/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs:132-150 | 2016/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs:132-150 | 2016/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs:132-150 | 2017/Case.ApplySysOrient/API/clsAPI.cs:132-150 | 2017/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs:132-150 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs:132-151 | 2017/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs:132-151 | 2017/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs:130-148 | 2017/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs:132-150 | 2017/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs:132-150 | 2017/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs:132-150 | 2018/Case.ApplySysOrient/API/clsAPI.cs:132-150 \u2014 before extracting anything, compare \u00602015/Case.ApplySysOrient/API/clsAPI.cs\u0060 and \u00602015/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 122 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.ApplySysOrient/API/clsAPI.cs:132\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f000d8f15907b9d10a82769dcb88a92d3fe9c942d09d52dcac98b5597976539"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 12): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:257-274 | 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:326-343 | 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:410-427 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:257-274 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:326-343 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:410-427 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:257-274 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:326-343 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:410-427 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:257-274 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:326-343 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:410-427 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 330 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8ff071ad5bdc180a4d42a2e5d27f228bfcf4d173ba28e90caf9b7df470cdd49"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 8): 2015/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs:100-119 | 2015/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs:134-153 | 2016/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs:100-119 | 2016/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs:132-151 | 2017/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs:100-119 | 2017/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs:132-151 | 2018/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs:95-114 | 2018/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs:127-146 \u2014 before extracting anything, compare \u00602015/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs\u0060 and \u00602016/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 123 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. \u2605 These copies have DRIFTED, and that is worth reading before extracting anything: just after the matched lines, \u00602016/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs:122\u0060 calls \u0060ResetTextPosition\u0060 and \u00602015/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs:125\u0060 does not \u2014 after which the two agree again for 2 more lines. One of those two behaviours is the intended one and the other is what a copy-paste left behind, so decide which BEFORE unifying them: extracting the shared part will silently settle it, and if the copy that skips the call is the wrong one, that bug is already live."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"016647c62d329bb671fb1f6e82fb3656b3019aade8fe63c7f070ff1eae35310d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 7): 2015/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb:24-42 | 2015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/Entry/CmdMain.vb:25-43 | 2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Entry/CmdMain.vb:24-42 | 2015/Case.Directionality/Case.Directionality/Entry/CmdMain.vb:24-42 | 2015/Case.ImageToDraftingView/Case.ImageToDraftingView/Entry/CmdMain.vb:23-41 | 2015/Case.LineChanger/Case.LineChanger/Entry/CmdMain.vb:17-35 | 2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Entry/CmdMain.vb:25-43 \u2014 before extracting anything, compare \u00602015/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb\u0060 and \u00602015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/Entry/CmdMain.vb\u0060 as WHOLE FILES: 93% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"f93d3f9296150b77671c9e64e4438f0c930e7b38f39e1228bb643aee2292c1c3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 7): 2016/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb:24-42 | 2016/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/Entry/CmdMain.vb:25-43 | 2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Entry/CmdMain.vb:24-42 | 2016/Case.Directionality/Case.Directionality/Entry/CmdMain.vb:24-42 | 2016/Case.ImageToDraftingView/Case.ImageToDraftingView/Entry/CmdMain.vb:23-41 | 2016/Case.LineChanger/Case.LineChanger/Entry/CmdMain.vb:17-35 | 2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Entry/CmdMain.vb:25-43 \u2014 before extracting anything, compare \u00602016/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb\u0060 and \u00602016/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/Entry/CmdMain.vb\u0060 as WHOLE FILES: 93% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"f736e03c30c337691e55303abcf279fcc816d726d3a1381207873523a9234954"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 7): 2017/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb:24-42 | 2017/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/Entry/CmdMain.vb:25-43 | 2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Entry/CmdMain.vb:24-42 | 2017/Case.Directionality/Case.Directionality/Entry/CmdMain.vb:24-42 | 2017/Case.ImageToDraftingView/Case.ImageToDraftingView/Entry/CmdMain.vb:23-41 | 2017/Case.LineChanger/Case.LineChanger/Entry/CmdMain.vb:17-35 | 2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Entry/CmdMain.vb:25-43 \u2014 before extracting anything, compare \u00602017/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb\u0060 and \u00602017/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/Entry/CmdMain.vb\u0060 as WHOLE FILES: 93% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"effb8cf9dcbc8255daa3e39702462c676612783f19f83f900f806dc2686ba46c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 7): 2018/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb:24-42 | 2018/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/Entry/CmdMain.vb:25-43 | 2018/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Entry/CmdMain.vb:24-42 | 2018/Case.Directionality/Case.Directionality/Entry/CmdMain.vb:24-42 | 2018/Case.ImageToDraftingView/Case.ImageToDraftingView/Entry/CmdMain.vb:23-41 | 2018/Case.LineChanger/Case.LineChanger/Entry/CmdMain.vb:17-35 | 2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Entry/CmdMain.vb:25-43 \u2014 before extracting anything, compare \u00602018/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb\u0060 and \u00602018/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/Entry/CmdMain.vb\u0060 as WHOLE FILES: 93% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.BasicReporting/Case.BasicReporting/Entry/CmdMain.vb"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"b042fcfcfadadcaf87b758fb4461d3f83e8fdb8fc15797ecba173fdfba01ea90"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201320 lines \u00D7 6): 2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Entry/CmdMain.vb:25-44 | 2015/Case.LightingLayout/Case.LightingLayout/Entry/CmdMain.vb:26-45 | 2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Entry/CmdMain.vb:27-46 | 2015/Case.SharedParameters/Case.SharedParameters/Entry/CmdMain.vb:25-44 | 2015/Case.Subs.Worksets/Case.Subs.Worksets/Entry/CEB749CFCF844AE8B76F40E3EBAA2FF7.vb:26-44 | 2015/Case.ViewTemplates/Case.ViewTemplates/Entry/CmdMain.vb:26-45 \u2014 before extracting anything, compare \u00602015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Entry/CmdMain.vb\u0060 and \u00602015/Case.SharedParameters/Case.SharedParameters/Entry/CmdMain.vb\u0060 as WHOLE FILES: 88% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Entry/CmdMain.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ef4dce9b9adcd575c56765adc8d613f4db86e1921c91e8e63fd568961fafbf0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201320 lines \u00D7 6): 2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Entry/CmdMain.vb:25-44 | 2016/Case.LightingLayout/Case.LightingLayout/Entry/CmdMain.vb:26-45 | 2016/Case.ModeledRoomTags/Case.ModeledRoomTags/Entry/CmdMain.vb:27-46 | 2016/Case.SharedParameters/Case.SharedParameters/Entry/CmdMain.vb:25-44 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/Entry/CEB749CFCF844AE8B76F40E3EBAA2FF7.vb:26-44 | 2016/Case.ViewTemplates/Case.ViewTemplates/Entry/CmdMain.vb:26-45 \u2014 before extracting anything, compare \u00602016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Entry/CmdMain.vb\u0060 and \u00602016/Case.SharedParameters/Case.SharedParameters/Entry/CmdMain.vb\u0060 as WHOLE FILES: 88% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Entry/CmdMain.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9ae20bf5a218dcf1d7181f219aa57e3071281eb18d9caed6ea435e3392984e0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201320 lines \u00D7 6): 2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Entry/CmdMain.vb:25-44 | 2017/Case.LightingLayout/Case.LightingLayout/Entry/CmdMain.vb:26-45 | 2017/Case.ModeledRoomTags/Case.ModeledRoomTags/Entry/CmdMain.vb:27-46 | 2017/Case.SharedParameters/Case.SharedParameters/Entry/CmdMain.vb:25-44 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/Entry/CEB749CFCF844AE8B76F40E3EBAA2FF7.vb:26-44 | 2017/Case.ViewTemplates/Case.ViewTemplates/Entry/CmdMain.vb:26-45 \u2014 before extracting anything, compare \u00602017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Entry/CmdMain.vb\u0060 and \u00602017/Case.SharedParameters/Case.SharedParameters/Entry/CmdMain.vb\u0060 as WHOLE FILES: 88% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Entry/CmdMain.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"d694241f8bc056ed60ea5c4a47a08800b74499e6526712d00e6c8ea211f8305a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201320 lines \u00D7 6): 2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Entry/CmdMain.vb:25-44 | 2018/Case.LightingLayout/Case.LightingLayout/Entry/CmdMain.vb:26-45 | 2018/Case.ModeledRoomTags/Case.ModeledRoomTags/Entry/CmdMain.vb:27-46 | 2018/Case.SharedParameters/Case.SharedParameters/Entry/CmdMain.vb:25-44 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/Entry/CEB749CFCF844AE8B76F40E3EBAA2FF7.vb:26-44 | 2018/Case.ViewTemplates/Case.ViewTemplates/Entry/CmdMain.vb:26-45 \u2014 before extracting anything, compare \u00602018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Entry/CmdMain.vb\u0060 and \u00602018/Case.SharedParameters/Case.SharedParameters/Entry/CmdMain.vb\u0060 as WHOLE FILES: 88% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Entry/CmdMain.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c0abb4f74264dfd8f09448f86cb04c52091174ab2d918b0b04740836c3bed34"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 4): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:613-632 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:613-632 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:613-632 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:613-632 \u2014 before extracting anything, compare \u00602015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb\u0060 and \u00602016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 323 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":613}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd3827e20465832ef7e4bf0111826e6571c818b4cc1e7090734236b88bdd386f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 4): 2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:93-112 | 2016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:93-112 | 2017/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:93-112 | 2018/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:93-112 \u2014 before extracting anything, compare \u00602015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb\u0060 and \u00602016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 215 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e3864f6d7638019b9025fbac742210675227b7c32afe512d3f92aaccbb715b1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 4): 2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:238-257 | 2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:238-257 | 2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:238-257 | 2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:238-257 \u2014 before extracting anything, compare \u00602015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb\u0060 and \u00602016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 264 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7f1f193c79b75e32aaf55738ebd3ab206bd41d3199f0285a56ab0e3ac54dc53"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:408-427 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:408-427 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:408-427 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:408-427 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 217 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"43c846528e3bb42aca0b9e53a5b6a2e50cb4898446da704c02654b2da8fadcba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 4): 2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:100-119 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:100-119 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:100-119 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:100-119 \u2014 before extracting anything, compare \u00602015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb\u0060 and \u00602016/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 323 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"18333b574e93ba3ba4aa77990b5e4de6690c15df344bdb2a3c3c479139ee39f6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:219-238 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:219-238 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:219-238 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:219-238 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 169 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"85c5ee5c7255e8f0fb3b7bc23433480b1120480643ce823f4babd21b98a01c8b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 4): 2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:374-393 | 2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:374-393 | 2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:374-393 | 2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:374-393 \u2014 before extracting anything, compare \u00602015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb\u0060 and \u00602016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 215 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"746190ebe04fabeb45b727b38e80a22a41601b77d7a52faea9b09a6a7e58a702"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 4): 2015/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:234-253 | 2016/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:234-253 | 2017/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:234-253 | 2018/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:234-253 \u2014 before extracting anything, compare \u00602015/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb\u0060 and \u00602016/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 93 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3a31179bac027727029ca38e5a152f18be289354e43918778b0717085287d68"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 4): 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:346-364 | 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:346-364 | 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:346-364 | 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:346-364 \u2014 before extracting anything, compare \u00602015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 and \u00602016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 as WHOLE FILES: this scan already matched 17 separate duplicated blocks between them, totalling at least 421 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"955f6d20c3dc6d8f33640651826f08ec01b42eae5c3820b9cd0c6bba74abe8de"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201320 lines \u00D7 4): 2018/Case.RoomSync/Case.RoomSync/Entry/CmdMain.vb:24-42 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Entry/AF73BA45B4B94C7585CB3E425D423F5E.vb:39-58 | 2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Entry/A01A0A226EBE4CD89D655C55B997650F.vb:28-46 | 2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Entry/CEB749CFCF844AE8B76F40E3EBAA2FF7.vb:25-43 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere all 4 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 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomSync/Case.RoomSync/Entry/CmdMain.vb"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"a74399a07246e8c65b7d664c1e9d3cafec7ea592c52bb42a9c344c9858aeff52"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201320 lines \u00D7 2): 2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:259-276 | 2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:376-395 \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":"2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"baa40b75a0a84eee8729a065f7fbf82677dc09bb9a6d9a973e8e7ac3e37db906"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201319 lines \u00D7 16): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb:39-57 | 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb:41-58 | 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F3.vb:39-56 | 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb:39-56 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb:39-57 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb:41-58 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F3.vb:39-56 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb:39-56 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb:39-57 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb:41-58 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F3.vb:39-56 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb:39-56 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb:39-57 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb:41-58 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F3.vb:39-56 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F4.vb:39-56 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb\u0060 and \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 67 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb:39\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":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F1.vb"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b30830956a0d22ad0ac5589ff5a4a94d2c4ac1b912a1534764229fbf6b68580"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 16): 2015/Case.ApplySysOrient/Data/clsSettings.cs:144-159 | 2015/Case.ApplySysOrient/Data/clsSettings.cs:207-222 | 2015/Case.ApplySysOrient/Data/clsSettings.cs:270-285 | 2015/Case.ApplySysOrient/Data/clsSettings.cs:334-349 | 2016/Case.ApplySysOrient/Data/clsSettings.cs:144-159 | 2016/Case.ApplySysOrient/Data/clsSettings.cs:207-222 | 2016/Case.ApplySysOrient/Data/clsSettings.cs:270-285 | 2016/Case.ApplySysOrient/Data/clsSettings.cs:334-349 | 2017/Case.ApplySysOrient/Data/clsSettings.cs:144-159 | 2017/Case.ApplySysOrient/Data/clsSettings.cs:207-222 | 2017/Case.ApplySysOrient/Data/clsSettings.cs:270-285 | 2017/Case.ApplySysOrient/Data/clsSettings.cs:334-349 | 2018/Case.ApplySysOrient/Data/clsSettings.cs:144-159 | 2018/Case.ApplySysOrient/Data/clsSettings.cs:207-222 | 2018/Case.ApplySysOrient/Data/clsSettings.cs:270-285 | 2018/Case.ApplySysOrient/Data/clsSettings.cs:334-349 \u2014 before extracting anything, compare \u00602015/Case.ApplySysOrient/Data/clsSettings.cs\u0060 and \u00602016/Case.ApplySysOrient/Data/clsSettings.cs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 288 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"441148116025d458d1af20631a1f14656690188e8080109823671cbe56eefbce"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201319 lines \u00D7 8): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:73-91 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:486-502 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:73-91 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:486-502 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:73-91 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:486-502 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:73-91 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:486-502 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 685 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. 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":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"341d4ec895dc24fb398a89bc9f833650f3a6aef36e0af6d666f586f8d820380a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 8): 2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:251-269 | 2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:368-388 | 2016/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:251-269 | 2016/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:368-388 | 2017/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:251-269 | 2017/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:368-388 | 2018/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:251-269 | 2018/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb:368-388 \u2014 before extracting anything, compare \u00602015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb\u0060 and \u00602016/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 245 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. 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":"2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"d13ada9959de0d47e22c4d4d348a2e36c61543b63a5f1519fca7d0c79c709ca7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 4): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb:152-170 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb:152-170 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb:152-170 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb:152-170 \u2014 before extracting anything, compare \u00602015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 97 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"769256558fb615f35c5add4a18fa0fc2e444ee7eb5a62a2f0db68bfcb691604c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:509-527 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:509-527 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:509-527 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:509-527 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 422 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":509}}}],"partialFingerprints":{"codehealthFindingId/v1":"705d43302d25b9eb7a2204ec62e1a2d8becb113bda1b3d307cadcc7bcda8d942"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:537-555 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:537-555 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:537-555 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:537-555 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 422 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":537}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2478635e173d85a6a7424ec32a789c18c5f423dc04010b73b94c1bec2b82e41"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb:197-215 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb:197-215 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb:197-215 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb:197-215 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 81 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"a03510c689bce7886d786a3f84710a8d20546c173d8e436d1bf2e6130c444104"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 4): 2015/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb:14-32 | 2016/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb:14-32 | 2017/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb:14-32 | 2018/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb:14-32 \u2014 before extracting anything, compare \u00602015/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb\u0060 and \u00602016/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"873d190bef8e7ca384a906bb7c415390ca8b62a4840c4b542b279450e38e0e0b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 4): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/clsFormUtil.vb:33-51 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/clsFormUtil.vb:33-51 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/clsFormUtil.vb:33-51 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/clsFormUtil.vb:33-51 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/clsFormUtil.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/clsFormUtil.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/clsFormUtil.vb"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"194dc018fc341de05dab7edbf04e4d12a2c502b521de5e9764ccac1fc7ac50ee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 4): 2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:267-285 | 2016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:267-285 | 2017/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:267-285 | 2018/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:267-285 \u2014 before extracting anything, compare \u00602015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb\u0060 and \u00602016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 215 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"8427f67008e2c8bb408368947133c11b7f7940b3c823febc01fdbed9983a7951"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:205-223 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:205-223 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:205-223 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:205-223 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 175 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"79ae64641bfced84b62818a818c78586994c215c0db58d102b4a66f1caa87446"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 4): 2015/Case.Directionality/Case.Directionality/Data/clsParamItem.vb:25-43 | 2016/Case.Directionality/Case.Directionality/Data/clsParamItem.vb:25-43 | 2017/Case.Directionality/Case.Directionality/Data/clsParamItem.vb:25-43 | 2018/Case.Directionality/Case.Directionality/Data/clsParamItem.vb:25-43 \u2014 before extracting anything, compare \u00602015/Case.Directionality/Case.Directionality/Data/clsParamItem.vb\u0060 and \u00602016/Case.Directionality/Case.Directionality/Data/clsParamItem.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/Data/clsParamItem.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"93b6e12361b2bc5c5e8d3a0152d40f739c50db423ae154a03ed929915ca2c3e4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 4): 2015/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:181-199 | 2016/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:181-199 | 2017/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:181-199 | 2018/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:181-199 \u2014 before extracting anything, compare \u00602015/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb\u0060 and \u00602016/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 150 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9810eaa61e169c132d17bf1b950a1ab911ce4e2be9d2621beeab0817f75656a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 4): 2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:104-121 | 2016/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:104-121 | 2017/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:104-121 | 2018/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:104-121 \u2014 before extracting anything, compare \u00602015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs\u0060 and \u00602016/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 123 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"f96b706bf2e959ae08ed8049b37555585d6f8e90eb69309c1b332295c88a804c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 4): 2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:167-183 | 2016/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:167-183 | 2017/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:167-183 | 2018/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:163-179 \u2014 before extracting anything, compare \u00602015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs\u0060 and \u00602016/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 264 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"e181878d1ffa21f45af4bf3e5d1ae6e2878f99de39b8691eb2fe7c2ff1088f10"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 4): 2015/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb:45-63 | 2016/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb:45-63 | 2017/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb:45-63 | 2018/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb:45-63 \u2014 before extracting anything, compare \u00602015/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb\u0060 and \u00602016/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 242 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a1f56cebd3ce48991435773424352d10781103a21643e80a17609bdee48476c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 3): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Entry/AF73BA45B4B94C7585CB3E425D423F5E.vb:39-58 | 2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Entry/A01A0A226EBE4CD89D655C55B997650F.vb:28-46 | 2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Entry/CEB749CFCF844AE8B76F40E3EBAA2FF7.vb:25-43 \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":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Entry/AF73BA45B4B94C7585CB3E425D423F5E.vb"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"62d246c4d1dbb06175143f309da94e9967e439886d78f4f9b1436c7b7aa17204"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 3): 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Entry/AF73BA45B4B94C7585CB3E425D423F5E.vb:39-58 | 2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Entry/A01A0A226EBE4CD89D655C55B997650F.vb:28-46 | 2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Entry/CEB749CFCF844AE8B76F40E3EBAA2FF7.vb:25-43 \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":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Entry/AF73BA45B4B94C7585CB3E425D423F5E.vb"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"26442f544acaa63c8024ce6550f2eb97ec598290c996c5db4a2c9488125afdd1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 3): 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Entry/AF73BA45B4B94C7585CB3E425D423F5E.vb:39-58 | 2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Entry/A01A0A226EBE4CD89D655C55B997650F.vb:28-46 | 2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Entry/CEB749CFCF844AE8B76F40E3EBAA2FF7.vb:25-43 \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":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Entry/AF73BA45B4B94C7585CB3E425D423F5E.vb"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"30cf8ae9cd029cad8980f2734a53e46d89eced62caa72f56530d86b72e7fc270"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:441-459 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:441-459 \u2014 before extracting anything, compare \u00602017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb\u0060 and \u00602018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 610 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":441}}}],"partialFingerprints":{"codehealthFindingId/v1":"11087d0c72aff04ff126ad0750fc281106080905f705957080adedbb10b1ede6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201318 lines \u00D7 5): 2015/Case.DimensionOverrides/Case.DimensionOverrides/Entry/CmdMain.cs:26-41 | 2015/Case.ObjectStyles/Case.ObjectStyles/Entry/CmdMain.cs:23-40 | 2015/Case.ParallelWalls/Case.ParallelWalls/Entry/CmdMain.cs:23-38 | 2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Entry/CmdMain.cs:23-40 | 2015/Case.UngroupAll/Case.UngroupAll/Entry/CmdMain.cs:23-40 \u2014 before extracting anything, compare \u00602015/Case.DimensionOverrides/Case.DimensionOverrides/Entry/CmdMain.cs\u0060 and \u00602015/Case.ObjectStyles/Case.ObjectStyles/Entry/CmdMain.cs\u0060 as WHOLE FILES: 89% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.DimensionOverrides/Case.DimensionOverrides/Entry/CmdMain.cs:26\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":"2015/Case.DimensionOverrides/Case.DimensionOverrides/Entry/CmdMain.cs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6464723820e4ec9ac9d1e91360bc7496cb07fae87b6554f82645192adfffeff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201318 lines \u00D7 5): 2016/Case.DimensionOverrides/Case.DimensionOverrides/Entry/CmdMain.cs:26-41 | 2016/Case.ObjectStyles/Case.ObjectStyles/Entry/CmdMain.cs:23-40 | 2016/Case.ParallelWalls/Case.ParallelWalls/Entry/CmdMain.cs:23-38 | 2016/Case.ReportGroupsByView/Case.ReportGroupsByView/Entry/CmdMain.cs:23-40 | 2016/Case.UngroupAll/Case.UngroupAll/Entry/CmdMain.cs:23-40 \u2014 before extracting anything, compare \u00602016/Case.DimensionOverrides/Case.DimensionOverrides/Entry/CmdMain.cs\u0060 and \u00602016/Case.ObjectStyles/Case.ObjectStyles/Entry/CmdMain.cs\u0060 as WHOLE FILES: 89% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602016/Case.DimensionOverrides/Case.DimensionOverrides/Entry/CmdMain.cs:26\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":"2016/Case.DimensionOverrides/Case.DimensionOverrides/Entry/CmdMain.cs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b0dd417f4a192ad712c449066fc39bec8848cb196ef918abe5163a360be270a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201318 lines \u00D7 5): 2017/Case.DimensionOverrides/Case.DimensionOverrides/Entry/CmdMain.cs:26-41 | 2017/Case.ObjectStyles/Case.ObjectStyles/Entry/CmdMain.cs:23-40 | 2017/Case.ParallelWalls/Case.ParallelWalls/Entry/CmdMain.cs:23-38 | 2017/Case.ReportGroupsByView/Case.ReportGroupsByView/Entry/CmdMain.cs:23-40 | 2017/Case.UngroupAll/Case.UngroupAll/Entry/CmdMain.cs:23-40 \u2014 before extracting anything, compare \u00602017/Case.DimensionOverrides/Case.DimensionOverrides/Entry/CmdMain.cs\u0060 and \u00602017/Case.ObjectStyles/Case.ObjectStyles/Entry/CmdMain.cs\u0060 as WHOLE FILES: 89% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602017/Case.DimensionOverrides/Case.DimensionOverrides/Entry/CmdMain.cs:26\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":"2017/Case.DimensionOverrides/Case.DimensionOverrides/Entry/CmdMain.cs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1e29a377f076c1b09fb90600a7fee169e93818c9956f73a8f48e56e443d5202"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 4): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:266-283 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:266-283 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:266-283 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:266-283 \u2014 before extracting anything, compare \u00602015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb\u0060 and \u00602016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 323 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"976abdc1e419659507a038402a022235d36d7b535838bab2028b2a57f4b45f2d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 4): 2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:301-318 | 2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:301-318 | 2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:301-318 | 2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:301-318 \u2014 before extracting anything, compare \u00602015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb\u0060 and \u00602016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 264 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"55c49f3fa098658142edcffd623c6f779df1dfd2351e7bbac8788c8eda361c08"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 4): 2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:370-387 | 2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:370-387 | 2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:370-387 | 2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:370-387 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb\u0060 and \u00602016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 373 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"2904d69dd4985778972d39fbc742c01163550f337cf2050032caf34dec7aa8b2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:15-32 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:15-32 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:15-32 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb:15-32 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 274 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d2d087ef53767818aaf687930f57774aac3691d8501f33a885ebe6c06d519a0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:357-374 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:357-374 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:357-374 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb:357-374 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 175 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"e10bdec37321c689cca20c1ac23dd14716d4c6ccf20c9786df327a5861092dd9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 4): 2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb:212-229 | 2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb:212-229 | 2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb:212-229 | 2018/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb:212-229 \u2014 before extracting anything, compare \u00602015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb\u0060 and \u00602016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 131 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"95aaee9978684e06129016608f236b5defe5dffcba94e1c1870fa6897696df88"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 4): 2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:155-171 | 2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:155-171 | 2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:155-171 | 2018/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:156-172 \u2014 before extracting anything, compare \u00602015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb\u0060 and \u00602016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 364 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"98e32cc0e62d407c43c524465205710b9f3d65ad2646a326b183392a3858dd58"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 4): 2015/Case.ViewportReporting/Case.ViewportReporting/Data/clsSettings.vb:21-38 | 2016/Case.ViewportReporting/Case.ViewportReporting/Data/clsSettings.vb:21-38 | 2017/Case.ViewportReporting/Case.ViewportReporting/Data/clsSettings.vb:21-38 | 2018/Case.ViewportReporting/Case.ViewportReporting/Data/clsSettings.vb:21-38 \u2014 before extracting anything, compare \u00602015/Case.ViewportReporting/Case.ViewportReporting/Data/clsSettings.vb\u0060 and \u00602016/Case.ViewportReporting/Case.ViewportReporting/Data/clsSettings.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewportReporting/Case.ViewportReporting/Data/clsSettings.vb"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"03940dfd4f764f5fe2594e5dddd123435c3759f6896d027b0ee113da1c48ce11"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 4): 2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:157-173 | 2016/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:157-173 | 2017/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:157-173 | 2018/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:157-173 \u2014 before extracting anything, compare \u00602015/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs\u0060 and \u00602016/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 106 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"1063f3080c9ee0d6daae12e00fa132e1cc225ecb7a6f8689a0b7838fba9e695b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 4): 2015/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnSettings.cs:57-73 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnSettings.cs:57-73 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnSettings.cs:57-73 | 2018/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnSettings.cs:57-73 \u2014 before extracting anything, compare \u00602015/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnSettings.cs\u0060 and \u00602016/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnSettings.cs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 40 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnSettings.cs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcbe78ad2be59b79077a36319edf41611d78ed8cda06b0148c11c84103edc274"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201318 lines \u00D7 4): 2018/Case.DimensionOverrides/Case.DimensionOverrides/Entry/CmdMain.cs:21-36 | 2018/Case.ObjectStyles/Case.ObjectStyles/Entry/CmdMain.cs:23-40 | 2018/Case.ParallelWalls/Case.ParallelWalls/Entry/CmdMain.cs:23-38 | 2018/Case.ReportGroupsByView/Case.ReportGroupsByView/Entry/CmdMain.cs:23-40 \u2014 before extracting anything, compare \u00602018/Case.DimensionOverrides/Case.DimensionOverrides/Entry/CmdMain.cs\u0060 and \u00602018/Case.ObjectStyles/Case.ObjectStyles/Entry/CmdMain.cs\u0060 as WHOLE FILES: 89% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602018/Case.DimensionOverrides/Case.DimensionOverrides/Entry/CmdMain.cs:21\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":"2018/Case.DimensionOverrides/Case.DimensionOverrides/Entry/CmdMain.cs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb6672a20f67c98cea8046be4f25348fa4f9b8c3413a99ea367156a8d0c1386f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:21-38 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:21-38 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 149 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4c1508bbaef5ba5dfa97ababa5d339d32f7b65ffa64b1fb5542b8fb2da0054e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:21-38 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:21-38 \u2014 before extracting anything, compare \u00602017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb\u0060 and \u00602018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 149 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"80af924ba895241342cb28e43961e78cd5a66b61a3c77c9512b395bbb3d6254c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201317 lines \u00D7 25): 2015/Case.ApplySysOrient/API/clsAPI.cs:110-126 | 2015/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs:110-126 | 2015/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs:110-126 | 2015/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs:110-126 | 2015/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs:110-124 | 2015/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs:110-126 | 2015/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs:110-126 | 2015/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs:110-126 | 2016/Case.ApplySysOrient/API/clsAPI.cs:110-126 | 2016/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs:110-126 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs:110-126 | 2016/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs:110-126 | 2016/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs:110-124 | 2016/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs:110-126 | 2016/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs:110-126 | 2016/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs:110-126 | 2017/Case.ApplySysOrient/API/clsAPI.cs:110-126 | 2017/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs:110-126 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs:110-126 | 2017/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs:110-126 | 2017/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs:110-124 | 2017/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs:110-126 | 2017/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs:110-126 | 2017/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs:110-126 | 2018/Case.ApplySysOrient/API/clsAPI.cs:110-126 \u2014 before extracting anything, compare \u00602015/Case.ApplySysOrient/API/clsAPI.cs\u0060 and \u00602015/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 122 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.ApplySysOrient/API/clsAPI.cs:110\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. \u2605 These copies have DRIFTED, and that is worth reading before extracting anything: just after the matched lines, \u00602015/Case.ApplySysOrient/API/clsAPI.cs:126\u0060 calls \u0060ToString\u0060 and \u00602015/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs:124\u0060 does not \u2014 after which the two agree again for 2 more lines. One of those two behaviours is the intended one and the other is what a copy-paste left behind, so decide which BEFORE unifying them: extracting the shared part will silently settle it, and if the copy that skips the call is the wrong one, that bug is already live."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"70c970d7bfe579dde99dcc7cbb68d00f4a0f83418de7a8f92798d46774f73585"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201317 lines \u00D7 16): 2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSortableBindingList.vb:57-73 | 2015/Case.LightingLayout/Case.LightingLayout/Data/clsSortableBindingList.vb:58-73 | 2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSortableBindingList.vb:58-73 | 2015/Case.RevClouds/Case.RevClouds/Data/clsSortableBindingList.vb:58-73 | 2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSortableBindingList.vb:57-73 | 2016/Case.LightingLayout/Case.LightingLayout/Data/clsSortableBindingList.vb:58-73 | 2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSortableBindingList.vb:58-73 | 2016/Case.RevClouds/Case.RevClouds/Data/clsSortableBindingList.vb:58-73 | 2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSortableBindingList.vb:57-73 | 2017/Case.LightingLayout/Case.LightingLayout/Data/clsSortableBindingList.vb:58-73 | 2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSortableBindingList.vb:58-73 | 2017/Case.RevClouds/Case.RevClouds/Data/clsSortableBindingList.vb:58-73 | 2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSortableBindingList.vb:57-73 | 2018/Case.LightingLayout/Case.LightingLayout/Data/clsSortableBindingList.vb:58-73 | 2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSortableBindingList.vb:58-73 | 2018/Case.RevClouds/Case.RevClouds/Data/clsSortableBindingList.vb:58-73 \u2014 before extracting anything, compare \u00602015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSortableBindingList.vb\u0060 and \u00602015/Case.LightingLayout/Case.LightingLayout/Data/clsSortableBindingList.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 32 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSortableBindingList.vb"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a4e6f0939cfa862134d3cfa177a7835dca961c21e6c6d55766bbf2afa57b936"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 12): 2015/Case.Directionality/Case.Directionality/Data/clsPara.vb:162-177 | 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb:121-136 | 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb:148-163 | 2016/Case.Directionality/Case.Directionality/Data/clsPara.vb:162-177 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb:121-136 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb:148-163 | 2017/Case.Directionality/Case.Directionality/Data/clsPara.vb:162-177 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb:121-136 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb:148-163 | 2018/Case.Directionality/Case.Directionality/Data/clsPara.vb:162-177 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb:121-136 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb:148-163 \u2014 before extracting anything, compare \u00602015/Case.Directionality/Case.Directionality/Data/clsPara.vb\u0060 and \u00602016/Case.Directionality/Case.Directionality/Data/clsPara.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. \u2605 These copies have DRIFTED, and that is worth reading before extracting anything: just before the matched lines, \u00602015/Case.Directionality/Case.Directionality/Data/clsPara.vb:160\u0060 calls \u0060GetParameterValue\u0060 and \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb:119\u0060 does not \u2014 after which the two agree again for 3 more lines. One of those two behaviours is the intended one and the other is what a copy-paste left behind, so decide which BEFORE unifying them: extracting the shared part will silently settle it, and if the copy that skips the call is the wrong one, that bug is already live."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/Data/clsPara.vb"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"628962ae65d073f8d9ef78e1fa6f672398fed10b8d6ef7d6f849cc91daeb91eb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 8): 2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsView.vb:93-109 | 2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsView.vb:81-97 | 2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsView.vb:93-109 | 2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsView.vb:81-97 | 2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsView.vb:93-109 | 2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsView.vb:81-97 | 2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsView.vb:93-109 | 2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsView.vb:81-97 \u2014 before extracting anything, compare \u00602015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsView.vb\u0060 and \u00602015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsView.vb\u0060 as WHOLE FILES: 86% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c8811aa43fb8e10a5ddbc9b7f75383cf2470f5ce16610f4cc5e8e548644576d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 4): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb:63-79 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb:63-79 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb:63-79 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb:63-79 \u2014 before extracting anything, compare \u00602015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb\u0060 and \u00602016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"874ccd2190eb5dfd3eec12b852aa7aff5432dce0a2a368b0915c8c6cd66487d9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:77-93 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:77-93 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:77-93 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:77-93 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 109 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"f170deae3861000de7e3d706d1ed1480294b01746f08bca1f73e07f240e3731c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:103-119 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:103-119 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:103-119 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:103-119 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 109 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"46e81c5e481ffcd24c0b1cc84d196623395817ea2a91e442570497e3c8b7ae8b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 4): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONSort.vb:59-75 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONSort.vb:59-75 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONSort.vb:59-75 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONSort.vb:59-75 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONSort.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONSort.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONSort.vb"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"befe734fc1578abffdd0cba301d12a1447b39cb53b9d146d815417700f2a81d0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 4): 2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:25-40 | 2016/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:25-40 | 2017/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:25-40 | 2018/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs:25-40 \u2014 before extracting anything, compare \u00602015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs\u0060 and \u00602016/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 123 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"53a33a10d555d58fb85e849aada99a6c9d48a2acb959f03854fb543d76de22d9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 4): 2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:334-350 | 2016/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:334-350 | 2017/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:334-350 | 2018/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:330-346 \u2014 before extracting anything, compare \u00602015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs\u0060 and \u00602016/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 264 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:334\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":"2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dbc33f5db1a5237ffbbf63b07061b8be5759ed447079085e109cd992bb657c2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 4): 2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:171-186 | 2016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:171-186 | 2017/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:171-186 | 2018/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:171-186 \u2014 before extracting anything, compare \u00602015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs\u0060 and \u00602016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 115 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"659a3411b0fd33bc0ad3145aab82dbeac7b20b2956f72dbe2bde084a82457f05"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 4): 2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:196-211 | 2016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:196-211 | 2017/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:196-211 | 2018/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:196-211 \u2014 before extracting anything, compare \u00602015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs\u0060 and \u00602016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 115 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"53bfebf39e64284bd1f9ee97139f349f51c19f461d6b74236c59fcc046c98ce7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 4): 2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:183-199 | 2016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:183-199 | 2017/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:183-199 | 2018/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:183-199 \u2014 before extracting anything, compare \u00602015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb\u0060 and \u00602016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 93 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"39bc75af797eb9048ed228b41a3f18bfedfc31be3f1001cdbb4af70f6d4837cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 28): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSortableBindingList.vb:56-71 | 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSortableBindingList.vb:56-71 | 2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSortableBindingList.vb:56-71 | 2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSortableBindingList.vb:56-71 | 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSortableBindingList.vb:56-71 | 2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSortableBindingList.vb:56-71 | 2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSortableBindingList.vb:56-71 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSortableBindingList.vb:56-71 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSortableBindingList.vb:56-71 | 2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSortableBindingList.vb:56-71 | 2016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSortableBindingList.vb:56-71 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSortableBindingList.vb:56-71 | 2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSortableBindingList.vb:56-71 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSortableBindingList.vb:56-71 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSortableBindingList.vb:56-71 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSortableBindingList.vb:56-71 | 2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSortableBindingList.vb:56-71 | 2017/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSortableBindingList.vb:56-71 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSortableBindingList.vb:56-71 | 2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSortableBindingList.vb:56-71 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSortableBindingList.vb:56-71 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSortableBindingList.vb:56-71 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSortableBindingList.vb:56-71 | 2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSortableBindingList.vb:56-71 | 2018/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSortableBindingList.vb:56-71 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSortableBindingList.vb:56-71 | 2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSortableBindingList.vb:56-71 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSortableBindingList.vb:56-71 \u2014 before extracting anything, compare \u00602015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSortableBindingList.vb\u0060 and \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSortableBindingList.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 36 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSortableBindingList.vb"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3cff386bcfa54ca6272ac5f1fc0b7aec12252cba288ababc31f601c2887cd7d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201316 lines \u00D7 12): 2015/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs:94-109 | 2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnData.cs:51-64 | 2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs:99-112 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs:94-109 | 2016/Case.ObjectStyles/Case.ObjectStyles/Data/mnData.cs:51-64 | 2016/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs:99-112 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs:94-109 | 2017/Case.ObjectStyles/Case.ObjectStyles/Data/mnData.cs:51-64 | 2017/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs:99-112 | 2018/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs:94-109 | 2018/Case.ObjectStyles/Case.ObjectStyles/Data/mnData.cs:51-64 | 2018/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs:99-112 \u2014 before extracting anything, compare \u00602015/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs\u0060 and \u00602016/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 61 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. 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":"2015/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bd6f8654c0a5b5edbd62165c35842b1df31e5d7824cfbb3b41afd71f5f18585"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 8): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:231-245 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:314-329 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:231-245 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:314-329 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:231-245 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:314-329 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:231-245 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:314-329 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 685 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7a5b40774434ede3d2f0351ed5f294ab600a3a4193d20cfb34b4d398521c859"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 4): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:32-47 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:32-47 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:32-47 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:32-47 \u2014 before extracting anything, compare \u00602015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb\u0060 and \u00602016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 323 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"d17d696b1c4205fb1d9b77d1731426879b7a9819fbc3a59af47dfff43f46ab26"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:566-581 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:566-581 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:566-581 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:566-581 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 422 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":566}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0fe7c68e149749eeadc8508f78952ac359550a7159bf23cfe74a852826a4879"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSortableBindingList.vb:60-75 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSortableBindingList.vb:60-75 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSortableBindingList.vb:60-75 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSortableBindingList.vb:60-75 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSortableBindingList.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSortableBindingList.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSortableBindingList.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb6843a82e80957a9f943d0a447ff106552d69e2cf62cc891287bfb475398f07"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 4): 2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/SplitContainerEx.vb:40-55 | 2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/SplitContainerEx.vb:40-55 | 2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/SplitContainerEx.vb:40-55 | 2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/SplitContainerEx.vb:40-55 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/SplitContainerEx.vb\u0060 and \u00602016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/SplitContainerEx.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/SplitContainerEx.vb"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"f70f39b49d59e611bb489f0a1abd91b5665fe0088ce7d024f0193239c8a4c431"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 4): 2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb:136-151 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb:136-151 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb:136-151 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb:136-151 \u2014 before extracting anything, compare \u00602015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb\u0060 and \u00602016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 30 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"273d26919dd7fe72e1b45100f8502da12702c13cd719c9d2905be39edb56e981"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:340-355 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:340-355 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:340-355 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:339-354 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 317 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb0312362c39c1350dd10e1306e3b5082d5015f1ec23d4698162793f1cc7f178"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 4): 2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:146-159 | 2016/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:146-159 | 2017/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:146-159 | 2018/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:142-155 \u2014 before extracting anything, compare \u00602015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs\u0060 and \u00602016/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 264 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"55ef2f1040cf06b328b28982aa5029af37bc86e923751abfd3a528744af8f6d3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 4): 2015/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:42-56 | 2016/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:42-56 | 2017/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:42-56 | 2018/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:42-56 \u2014 before extracting anything, compare \u00602015/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs\u0060 and \u00602016/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 83 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"77b14596e84c2bbe19b0f06549496db679fcfe92405598824f685c15f91b8469"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 4): 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:172-186 | 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:172-186 | 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:172-186 | 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:172-186 \u2014 before extracting anything, compare \u00602015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 and \u00602016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 as WHOLE FILES: this scan already matched 17 separate duplicated blocks between them, totalling at least 421 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa545cdea355b54d645620bd5669a373aa03ffb8042ccef4357160baa8ecf803"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:51-65 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:51-65 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:51-65 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:51-65 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 149 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa92332b5bd16ff71afba15e5fe4a22211b059bc5b9fc9899238f0cc1af7513d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 4): 2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:117-130 | 2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:117-130 | 2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:117-130 | 2018/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb:117-130 \u2014 before extracting anything, compare \u00602015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb\u0060 and \u00602016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 364 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"26660f78ee0758a7e329c578f07fa9657869aaf2096cb4b5302ecfaa0120f9b3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 4): 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:24-38 | 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:24-38 | 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:24-38 | 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:24-38 \u2014 before extracting anything, compare \u00602015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 and \u00602016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 as WHOLE FILES: this scan already matched 17 separate duplicated blocks between them, totalling at least 421 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:24\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":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9a14bb4a266536c7eb316872d46be85133900847e7abf0fe87e64907e97959c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 12): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:105-115 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:133-143 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:161-171 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:105-115 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:133-143 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:161-171 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:105-115 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:133-143 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:161-171 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:105-115 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:133-143 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:161-171 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 257 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c7c5c34f994d4bf39ff0007b541ef353dcb6774d6b386b203c974a933b9b8d0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 12): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:231-243 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:314-327 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:495-508 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:231-243 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:314-327 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:495-508 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:231-243 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:314-327 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:495-508 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:231-243 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:314-327 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:495-508 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 685 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a5c2550885bcbfb624a3053e2618cfa20a647b2dd270b61520b6f026cea1045"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 4): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONSort.vb:324-337 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONSort.vb:324-337 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONSort.vb:324-337 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONSort.vb:324-337 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONSort.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONSort.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/OpenNURBS/clsONSort.vb"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"c99095ebb8c2e7983bc51f3484aeb358bbca99859696c4630c549516ace73e95"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 4): 2015/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:205-218 | 2016/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:205-218 | 2017/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:205-218 | 2018/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:205-218 \u2014 before extracting anything, compare \u00602015/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb\u0060 and \u00602016/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 93 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"caf1291374e6ae8834385ca51b67019be017861773fc2e70c52691fa2f2fd49b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 4): 2015/Case.Navis2BCF/Case.Navis2BCF/CASERibbon.cs:10-23 | 2016/Case.Navis2BCF/Case.Navis2BCF/CASERibbon.cs:10-23 | 2017/Case.Navis2BCF/Case.Navis2BCF/CASERibbon.cs:10-23 | 2018/Case.Navis2BCF/Case.Navis2BCF/CASERibbon.cs:10-23 \u2014 before extracting anything, compare \u00602015/Case.Navis2BCF/Case.Navis2BCF/CASERibbon.cs\u0060 and \u00602016/Case.Navis2BCF/Case.Navis2BCF/CASERibbon.cs\u0060 as WHOLE FILES: 95% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.Navis2BCF/Case.Navis2BCF/CASERibbon.cs:10\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":"2015/Case.Navis2BCF/Case.Navis2BCF/CASERibbon.cs"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"e14d2729b3fd111c1c89c25c0ccfddd0d177611eb651a1275179fd068db111da"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 4): 2015/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:144-157 | 2016/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:144-157 | 2017/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:144-157 | 2018/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:144-157 \u2014 before extracting anything, compare \u00602015/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs\u0060 and \u00602016/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 83 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:144\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The \u0060return\u0060 at the foot of the matched lines is the enclosing body\u0027s own terminal exit, not an early one: it moves with them unchanged, and each site calls the extracted unit from the position that \u0060return\u0060 occupied \u2014 no decision has to be handed back and re-acted on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"87f54e02eaab4943cc9ed3ed63ed477ae7877e45ec8c86900cfcc84fc01ce3d8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 4): 2015/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnSettings.cs:83-95 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnSettings.cs:83-95 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnSettings.cs:83-95 | 2018/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnSettings.cs:83-95 \u2014 before extracting anything, compare \u00602015/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnSettings.cs\u0060 and \u00602016/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnSettings.cs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 40 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnSettings.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"f493fadf650664057640218af3dedbb4efd403bf67613d9f634d62f8998376e4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:127-140 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:127-140 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 317 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5ae899e56bad155ec74eba5f76692b83e17bc64a21300ac371bd8065945d4ca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:127-140 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:127-140 \u2014 before extracting anything, compare \u00602017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb\u0060 and \u00602018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 317 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"23908a1c596c9d1e3bff3d9b6020e148e1a8b6766676ad7aa1f1207668c18408"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 8): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:269-279 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:359-369 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:269-279 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:359-369 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:269-279 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:359-369 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:269-279 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:359-369 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 685 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d48d79bc6daae8efe2479c17125394397a3b350531895ceedb06e989953393d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 8): 2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:47-58 | 2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:210-221 | 2016/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:47-58 | 2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:210-221 | 2017/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:47-58 | 2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:210-221 | 2018/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:47-58 | 2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:210-221 \u2014 before extracting anything, compare \u00602015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb\u0060 and \u00602015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 94 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d22b4b20ce2f284855f0d491aa6c93c99e9105f75dc4bd77cfa305fb0d68990"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 4): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:300-312 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:300-312 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:300-312 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:300-312 \u2014 before extracting anything, compare \u00602015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb\u0060 and \u00602016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 323 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a988c767509698f6d3d962ed7608612dd82945ce1f4b6bb38e9ffb124da528f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 4): 2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb:161-173 | 2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb:161-173 | 2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb:161-173 | 2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb:161-173 \u2014 before extracting anything, compare \u00602015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb\u0060 and \u00602016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 30 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5f96d81a30f84ba8f5081da51e6dded39f3ad802da4bb9734114b08d899088a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb:61-73 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb:61-73 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb:61-73 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb:61-73 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 100 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb:61\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":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"8704e492b19d4499cfda9b07536b6cd3b6c8ebfcb09efdd6dfc2adcf760a8e13"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 4): 2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsSettings.vb:99-111 | 2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsSettings.vb:99-111 | 2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsSettings.vb:99-111 | 2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsSettings.vb:99-111 \u2014 before extracting anything, compare \u00602015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsSettings.vb\u0060 and \u00602016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsSettings.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsSettings.vb"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dc559a6311adc730ad73c323128a730071a7f2aa793a0d965ff4d477065bd6e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:508-519 | 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:508-519 | 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:508-519 | 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:508-519 \u2014 before extracting anything, compare \u00602015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 and \u00602016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 as WHOLE FILES: this scan already matched 17 separate duplicated blocks between them, totalling at least 421 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":508}}}],"partialFingerprints":{"codehealthFindingId/v1":"736e0f2f65786bfdd407f60c1e7b9bb3ff6a6d8e9138804028b5c689a241b68f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:528-539 | 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:528-539 | 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:528-539 | 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:528-539 \u2014 before extracting anything, compare \u00602015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 and \u00602016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 as WHOLE FILES: this scan already matched 17 separate duplicated blocks between them, totalling at least 421 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":528}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c4ccacf02cbf3ad1d41a13a8e3fbc5d26f6b2e0c5a3f8b75b961ed68d0bc283"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): 2015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:111-122 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:111-122 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:111-122 | 2018/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:111-122 \u2014 before extracting anything, compare \u00602015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs\u0060 and \u00602016/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 147 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"1eb68bd22543b94632d452c8266c63d6b05e134df7d7a499c4431303fdd8f5fc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): 2015/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs:137-148 | 2016/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs:137-148 | 2017/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs:137-148 | 2018/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs:132-143 \u2014 before extracting anything, compare \u00602015/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs\u0060 and \u00602016/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 55 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"511cb277ecf3510564695f7c4177babdb72eb0f481127d3435d5a5c3f5414d2b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): 2015/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:323-335 | 2016/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:323-335 \u2014 before extracting anything, compare \u00602015/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb\u0060 and \u00602016/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 93 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":323}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ed57eff34a587d73fc0c1bd8110b25877058bb9006243d6bf77c19300e01882"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): 2017/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:323-335 | 2018/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:317-329 \u2014 before extracting anything, compare \u00602017/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb\u0060 and \u00602018/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 93 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":323}}}],"partialFingerprints":{"codehealthFindingId/v1":"abf5dcddb25cb602d34017a366ccea5ca7616f0be039bad50cebbd279a537ce3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 12): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:234-245 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:318-329 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:408-419 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:234-245 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:318-329 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:408-419 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:234-245 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:318-329 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:408-419 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:234-245 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:318-329 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:408-419 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 685 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cc8f77f682be071df87667af2e0dab43c35b6ca55ece3ed8359d98403d78d19"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 8): 2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb:53-64 | 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFamily.vb:38-49 | 2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb:53-64 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFamily.vb:38-49 | 2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb:53-64 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFamily.vb:38-49 | 2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb:53-64 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFamily.vb:38-49 \u2014 before extracting anything, compare \u00602015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb\u0060 and \u00602016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbd4ff4046d08e38bd2d755493f15cc2acb10598455a0046cd66a6ba06245bc7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201312 lines \u00D7 8): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:68-79 | 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb:39-47 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:68-79 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb:39-47 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:68-79 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb:39-47 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:68-79 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb:39-47 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 330 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5566133e6ccd0c3dd466d8ab147318602aab2034d2ae3d0b48fd11013e88655"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:179-190 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:179-190 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:179-190 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:179-190 \u2014 before extracting anything, compare \u00602015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 172 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e86e791512ada2f26b14f2e459f89d7551674d0f8070b99ff0480da00b1aedd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): 2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb:258-269 | 2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb:258-269 | 2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb:258-269 | 2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb:258-269 \u2014 before extracting anything, compare \u00602015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb\u0060 and \u00602016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 30 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ca6758e6a531f6090f816fb34d7547ccf1a51ea1fd130eedf198a12926cad0f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): 2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:437-448 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:437-448 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:437-448 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:437-448 \u2014 before extracting anything, compare \u00602015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb\u0060 and \u00602016/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 323 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f5a7cc3fe780ef16e03f92356976691712317789f31fec149fc4908851c8e2b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFamily.vb:15-26 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFamily.vb:15-26 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFamily.vb:15-26 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFamily.vb:15-26 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFamily.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFamily.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFamily.vb"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"72ca2fe48ca405c81c6075c5766aea057fe78beca086f8e4bcb132235bd7b6be"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): 2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:80-91 | 2016/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:80-91 | 2017/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:80-91 | 2018/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:80-91 \u2014 before extracting anything, compare \u00602015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb\u0060 and \u00602016/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 173 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ba3b9062258d1195ac41b879ab8dd6bed08ad785824f3bd7b7fcf5e364343f7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): 2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsSettings.vb:99-110 | 2016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsSettings.vb:99-110 | 2017/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsSettings.vb:99-110 | 2018/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsSettings.vb:99-110 \u2014 before extracting anything, compare \u00602015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsSettings.vb\u0060 and \u00602016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 35 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsSettings.vb"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"97d7c708b83327f3e9f64e34b021d6eb25adb33872996d0137021e4dcfbf875b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): Case.AppsRibbon.2017/Utility/modUtility.vb:31-42 | Case.AppsRibbon.2018/Utility/modUtility.vb:31-42 | Case.AppsRibbon/Utility/modUtility.vb:31-42 \u2014 before extracting anything, compare \u0060Case.AppsRibbon.2017/Utility/modUtility.vb\u0060 and \u0060Case.AppsRibbon.2018/Utility/modUtility.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2017/Utility/modUtility.vb"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"be1ea6d8e9afa3aed56fdde66d1550ca5b34ad3a7b41b0e33de5069998e25c7d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201311 lines \u00D7 32): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:77-87 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:490-498 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:757-765 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:93-101 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:121-129 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:149-157 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:177-185 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/clsFormUtil.vb:34-44 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:77-87 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:490-498 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:757-765 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:93-101 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:121-129 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:149-157 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:177-185 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/clsFormUtil.vb:34-44 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:77-87 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:490-498 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:757-765 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:93-101 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:121-129 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:149-157 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:177-185 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/clsFormUtil.vb:34-44 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:77-87 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:490-498 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:757-765 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:93-101 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:121-129 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:149-157 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:177-185 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/clsFormUtil.vb:34-44 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 685 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. 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":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"e78fbfb50d0e0cbbcb3f054363e949305bc9f2ae0a31eef3fecdb211b150d106"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): 2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:211-221 | 2016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:211-221 | 2017/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:211-221 | 2018/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:211-221 \u2014 before extracting anything, compare \u00602015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb\u0060 and \u00602016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 215 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"93201a0545cb662ac27993e06c536c3be5d686a792f6b28850335058e06f63b1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): 2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:231-241 | 2016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:231-241 | 2017/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:231-241 | 2018/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:231-241 \u2014 before extracting anything, compare \u00602015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb\u0060 and \u00602016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 215 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"67bad637ff8589853185c182e5bbfcb57362f339a38e90db9ba1202c1d0c0226"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:33-43 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:33-43 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:33-43 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:33-43 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 330 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8129f9731e4e6f5fc2dbe1e4d6304c16cf440d5c9b24fa3e27ddc0e32581b63"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): 2015/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:178-188 | 2016/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:178-188 | 2017/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:178-188 | 2018/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb:178-188 \u2014 before extracting anything, compare \u00602015/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb\u0060 and \u00602016/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 93 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cfa645c757c5f3cc789378513595abb75c9040245ede7dcf0e20c365142934a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): 2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:11-21 | 2016/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:11-21 | 2017/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:11-21 | 2018/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:11-21 \u2014 before extracting anything, compare \u00602015/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs\u0060 and \u00602016/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 106 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:11\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":"2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"81ccd538f7e6902aeee08edaf81a1fba13eb99a95ec900af578268ba334dff20"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 16): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:234-243 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:318-327 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:408-417 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:499-508 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:234-243 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:318-327 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:408-417 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:499-508 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:234-243 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:318-327 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:408-417 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:499-508 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:234-243 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:318-327 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:408-417 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:499-508 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 as WHOLE FILES: this scan already matched 19 separate duplicated blocks between them, totalling at least 685 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. \u2605 These copies have DRIFTED, and that is worth reading before extracting anything: just after the matched lines, \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:510\u0060 calls \u0060Add\u0060 and \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:419\u0060 does not \u2014 after which the two agree again for 3 more lines. One of those two behaviours is the intended one and the other is what a copy-paste left behind, so decide which BEFORE unifying them: extracting the shared part will silently settle it, and if the copy that skips the call is the wrong one, that bug is already live."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"736fe035ef0f71490e1921bfae60df5e84990de8751223c21dbe66302a3f186f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): 2015/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:135-143 | 2016/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:135-143 | 2017/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:135-143 | 2018/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs:135-143 \u2014 before extracting anything, compare \u00602015/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs\u0060 and \u00602016/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 83 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef4c36623b25d46c4f2a1445465966eb199ff30c495330ef9f7abcd161b88dc3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:555-564 | 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:555-564 | 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:555-564 | 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:555-564 \u2014 before extracting anything, compare \u00602015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 and \u00602016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 as WHOLE FILES: this scan already matched 17 separate duplicated blocks between them, totalling at least 421 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:555\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The \u0060return\u0060 at the foot of the matched lines is the enclosing body\u0027s own terminal exit, not an early one: it moves with them unchanged, and each site calls the extracted unit from the position that \u0060return\u0060 occupied \u2014 no decision has to be handed back and re-acted on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":555}}}],"partialFingerprints":{"codehealthFindingId/v1":"96fd3eb8148660d378acc86a842b90c0e171c47655ebe4981851046d6b52d914"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:246-255 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:246-255 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 267 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"13ccf398a47a922ae28a970acde9b4ffc2f115c642b94ef3df30ef6eefaece1d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:246-255 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:246-255 \u2014 before extracting anything, compare \u00602017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 and \u00602018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 267 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c9e4e0b8ee82849f26f7c66bd3fe973c9c40c50fb9ea245b7914949e5f59b0a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 16): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:367-375 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:405-413 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:816-824 | 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:854-862 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:367-375 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:405-413 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:816-824 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:854-862 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:367-375 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:405-413 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:816-824 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:854-862 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:367-375 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:405-413 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:816-824 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb:854-862 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb\u0060 and \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTCurveUtils.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 92 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place. 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":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb"},"region":{"startLine":367}}}],"partialFingerprints":{"codehealthFindingId/v1":"262f6b81951ff4c0d9f7b2f9e789037c8374c8114573ceae0df706ece6b9d44f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 8): 2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:299-307 | 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:382-390 | 2016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:299-307 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:382-390 | 2017/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:299-307 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:382-390 | 2018/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:299-307 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:382-390 \u2014 before extracting anything, compare \u00602015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb\u0060 and \u00602016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 187 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"08e5ab6c34b90f8ba2486be21bef81e060dfb14dbbf41a9f4ed82e089a61d7d4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): 2015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb:33-41 | 2016/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb:33-41 | 2017/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb:33-41 | 2018/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb:33-41 \u2014 before extracting anything, compare \u00602015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb\u0060 and \u00602016/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"58cb8124f7667e275816a8867965ebfe278668d94faaaed777017fd8c2f7fa1a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:192-199 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:192-199 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:192-199 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb:192-199 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 383 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTBrepEdgeUtils.vb"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"2deae2b66d3d46851b49214c164ed14d78bb2b93b419ff497f8b486692ea2fc5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb:196-202 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb:196-202 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb:196-202 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb:196-202 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 110 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5e0a783d0337230ff3df7bb08767aaa386b6ceddc9357046afdc9acfc2c51ff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:550-554 | 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:550-554 | 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:550-554 | 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:550-554 \u2014 before extracting anything, compare \u00602015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 and \u00602016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 as WHOLE FILES: this scan already matched 17 separate duplicated blocks between them, totalling at least 421 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:550\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":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":550}}}],"partialFingerprints":{"codehealthFindingId/v1":"43c907f498863a6affb4d3cb315b938780c3c1824c75682023127f2df827be78"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5\u20136 lines \u00D7 44): 2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSortableBindingList.vb:57-62 | 2015/Case.LightingLayout/Case.LightingLayout/Data/clsSortableBindingList.vb:58-62 | 2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSortableBindingList.vb:58-62 | 2015/Case.RevClouds/Case.RevClouds/Data/clsSortableBindingList.vb:58-62 | 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSortableBindingList.vb:56-60 | 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSortableBindingList.vb:56-60 | 2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSortableBindingList.vb:56-60 | 2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSortableBindingList.vb:56-60 | 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSortableBindingList.vb:56-60 | 2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSortableBindingList.vb:56-60 | 2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSortableBindingList.vb:56-60 | 2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSortableBindingList.vb:57-62 | 2016/Case.LightingLayout/Case.LightingLayout/Data/clsSortableBindingList.vb:58-62 | 2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSortableBindingList.vb:58-62 | 2016/Case.RevClouds/Case.RevClouds/Data/clsSortableBindingList.vb:58-62 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSortableBindingList.vb:56-60 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSortableBindingList.vb:56-60 | 2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSortableBindingList.vb:56-60 | 2016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSortableBindingList.vb:56-60 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSortableBindingList.vb:56-60 | 2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSortableBindingList.vb:56-60 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSortableBindingList.vb:56-60 | 2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSortableBindingList.vb:57-62 | 2017/Case.LightingLayout/Case.LightingLayout/Data/clsSortableBindingList.vb:58-62 | 2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSortableBindingList.vb:58-62 | 2017/Case.RevClouds/Case.RevClouds/Data/clsSortableBindingList.vb:58-62 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSortableBindingList.vb:56-60 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSortableBindingList.vb:56-60 | 2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSortableBindingList.vb:56-60 | 2017/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSortableBindingList.vb:56-60 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSortableBindingList.vb:56-60 | 2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSortableBindingList.vb:56-60 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSortableBindingList.vb:56-60 | 2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSortableBindingList.vb:57-62 | 2018/Case.LightingLayout/Case.LightingLayout/Data/clsSortableBindingList.vb:58-62 | 2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSortableBindingList.vb:58-62 | 2018/Case.RevClouds/Case.RevClouds/Data/clsSortableBindingList.vb:58-62 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSortableBindingList.vb:56-60 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSortableBindingList.vb:56-60 | 2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSortableBindingList.vb:56-60 | 2018/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSortableBindingList.vb:56-60 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSortableBindingList.vb:56-60 | 2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSortableBindingList.vb:56-60 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSortableBindingList.vb:56-60 \u2014 before extracting anything, compare \u00602015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSortableBindingList.vb\u0060 and \u00602015/Case.LightingLayout/Case.LightingLayout/Data/clsSortableBindingList.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 32 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSortableBindingList.vb"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"4118510419f2b71a8e52100a3ba8d764b5dc85d1a2b65e47a87396da289e7ab5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (64 lines \u00D7 4): 2015/Case.ApplySysOrient/UI/form_MaxSize.cs:28-91 | 2016/Case.ApplySysOrient/UI/form_MaxSize.cs:28-91 | 2017/Case.ApplySysOrient/UI/form_MaxSize.cs:28-91 | 2018/Case.ApplySysOrient/UI/form_MaxSize.cs:28-91 \u2014 before extracting anything, compare \u00602015/Case.ApplySysOrient/UI/form_MaxSize.cs\u0060 and \u00602016/Case.ApplySysOrient/UI/form_MaxSize.cs\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/UI/form_MaxSize.cs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8c6aa5e308dad5c20413ee0b37b3be86d0494e96dd0d373618b8f66c4b74422"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (33 lines \u00D7 4): 2015/Case.ApplySysOrient/UI/form_Orient.cs:23-55 | 2016/Case.ApplySysOrient/UI/form_Orient.cs:23-55 | 2017/Case.ApplySysOrient/UI/form_Orient.cs:23-55 | 2018/Case.ApplySysOrient/UI/form_Orient.cs:23-55 \u2014 before extracting anything, compare \u00602015/Case.ApplySysOrient/UI/form_Orient.cs\u0060 and \u00602016/Case.ApplySysOrient/UI/form_Orient.cs\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/UI/form_Orient.cs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"38fd27b0aaafb0f70f0c03781bab619b4a21a42dd5f602b7ea667f85b4e95c20"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (36 lines \u00D7 4): 2015/Case.BasicReporting/Case.BasicReporting/Data/clsFormulas.vb:15-50 | 2016/Case.BasicReporting/Case.BasicReporting/Data/clsFormulas.vb:15-50 | 2017/Case.BasicReporting/Case.BasicReporting/Data/clsFormulas.vb:15-50 | 2018/Case.BasicReporting/Case.BasicReporting/Data/clsFormulas.vb:15-50 \u2014 before extracting anything, compare \u00602015/Case.BasicReporting/Case.BasicReporting/Data/clsFormulas.vb\u0060 and \u00602016/Case.BasicReporting/Case.BasicReporting/Data/clsFormulas.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Data/clsFormulas.vb"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"3276c74b45245f3255b0383ce43ea1c6bd26a263e459f2f533d3b9bb901cb2bf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (57 lines \u00D7 4): 2015/Case.BasicReporting/Case.BasicReporting/Data/clsSettings.vb:22-78 | 2016/Case.BasicReporting/Case.BasicReporting/Data/clsSettings.vb:22-78 | 2017/Case.BasicReporting/Case.BasicReporting/Data/clsSettings.vb:22-78 | 2018/Case.BasicReporting/Case.BasicReporting/Data/clsSettings.vb:22-78 \u2014 before extracting anything, compare \u00602015/Case.BasicReporting/Case.BasicReporting/Data/clsSettings.vb\u0060 and \u00602016/Case.BasicReporting/Case.BasicReporting/Data/clsSettings.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Data/clsSettings.vb"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"b18a5c2200fde55285130bc8adff1184057eebbd13947c95e0af5e38d9cb78a2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (83 lines \u00D7 4): 2015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/Data/clsSettings.vb:23-105 | 2016/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/Data/clsSettings.vb:23-105 | 2017/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/Data/clsSettings.vb:23-105 | 2018/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/Data/clsSettings.vb:23-105 \u2014 before extracting anything, compare \u00602015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/Data/clsSettings.vb\u0060 and \u00602016/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/Data/clsSettings.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/Data/clsSettings.vb"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"878b5cc1012e291271153a5cbe3bcb580b684d1b65562965885eac4fc64fa7a5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (68 lines \u00D7 4): 2015/Case.Directionality/Case.Directionality/Data/clsSettings.vb:20-87 | 2016/Case.Directionality/Case.Directionality/Data/clsSettings.vb:20-87 | 2017/Case.Directionality/Case.Directionality/Data/clsSettings.vb:20-87 | 2018/Case.Directionality/Case.Directionality/Data/clsSettings.vb:20-87 \u2014 before extracting anything, compare \u00602015/Case.Directionality/Case.Directionality/Data/clsSettings.vb\u0060 and \u00602016/Case.Directionality/Case.Directionality/Data/clsSettings.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/Data/clsSettings.vb"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"66516ad72b4886271f95e747b1d6eca53219cf757db12479c9e649c8ed3f381f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 4): 2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsPropertyComparer.vb:18-38 | 2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsPropertyComparer.vb:18-38 | 2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsPropertyComparer.vb:18-38 | 2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsPropertyComparer.vb:18-38 \u2014 before extracting anything, compare \u00602015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsPropertyComparer.vb\u0060 and \u00602016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsPropertyComparer.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsPropertyComparer.vb"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f26ae5b17bcbab3599dbf9e8c1e066e579e6bff6f66e3267b01163e7881cb8d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (51 lines \u00D7 4): 2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSettings.vb:25-75 | 2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSettings.vb:25-75 | 2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSettings.vb:25-75 | 2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSettings.vb:25-75 \u2014 before extracting anything, compare \u00602015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSettings.vb\u0060 and \u00602016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSettings.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSettings.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"320ad7a3d298c43a5c2a11e6d2866cb709830a61ca134d675bdca7f4347b8d57"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (66 lines \u00D7 4): 2015/Case.Export.Families/Case.Export.Families/Data/clsSettings.vb:22-87 | 2016/Case.Export.Families/Case.Export.Families/Data/clsSettings.vb:22-87 | 2017/Case.Export.Families/Case.Export.Families/Data/clsSettings.vb:22-87 | 2018/Case.Export.Families/Case.Export.Families/Data/clsSettings.vb:22-87 \u2014 before extracting anything, compare \u00602015/Case.Export.Families/Case.Export.Families/Data/clsSettings.vb\u0060 and \u00602016/Case.Export.Families/Case.Export.Families/Data/clsSettings.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Export.Families/Case.Export.Families/Data/clsSettings.vb"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc820f7a91d22a477cf12f48f073a01cdd5e863bb3d6e84e0b058f37c15f42c8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): 2015/Case.ExportSharedParameters/Case.ExportSharedParameters/UI/form_Main.cs:23-34 | 2016/Case.ExportSharedParameters/Case.ExportSharedParameters/UI/form_Main.cs:23-34 | 2017/Case.ExportSharedParameters/Case.ExportSharedParameters/UI/form_Main.cs:23-34 | 2018/Case.ExportSharedParameters/Case.ExportSharedParameters/UI/form_Main.cs:23-34 \u2014 before extracting anything, compare \u00602015/Case.ExportSharedParameters/Case.ExportSharedParameters/UI/form_Main.cs\u0060 and \u00602016/Case.ExportSharedParameters/Case.ExportSharedParameters/UI/form_Main.cs\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExportSharedParameters/Case.ExportSharedParameters/UI/form_Main.cs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"34c8600059ae2167766ff5382f6ba36eb7da337cb07bc40df4d1810ce928936e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (31 lines \u00D7 4): 2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Events/clsSWC.vb:25-55 | 2016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Events/clsSWC.vb:25-55 | 2017/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Events/clsSWC.vb:25-55 | 2018/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Events/clsSWC.vb:25-55 \u2014 before extracting anything, compare \u00602015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Events/clsSWC.vb\u0060 and \u00602016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Events/clsSWC.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Events/clsSWC.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"671f86eb458daff509fd07bf8dd4770234da2b023d9cb34e4b224b3db050c04b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (114 lines \u00D7 4): 2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Forms/form_Main.vb:11-124 | 2016/Case.FreeBenchmarking/Case.FreeBenchmarking/Forms/form_Main.vb:11-124 | 2017/Case.FreeBenchmarking/Case.FreeBenchmarking/Forms/form_Main.vb:11-124 | 2018/Case.FreeBenchmarking/Case.FreeBenchmarking/Forms/form_Main.vb:11-124 \u2014 before extracting anything, compare \u00602015/Case.FreeBenchmarking/Case.FreeBenchmarking/Forms/form_Main.vb\u0060 and \u00602016/Case.FreeBenchmarking/Case.FreeBenchmarking/Forms/form_Main.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Forms/form_Main.vb"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"44a443d4ec429c4c11b41815819f489bb977a1a0009d38a0d259e06f74a16e8e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (58 lines \u00D7 4): 2015/Case.ImageToDraftingView/Case.ImageToDraftingView/Data/clsPara.vb:15-72 | 2016/Case.ImageToDraftingView/Case.ImageToDraftingView/Data/clsPara.vb:15-72 | 2017/Case.ImageToDraftingView/Case.ImageToDraftingView/Data/clsPara.vb:15-72 | 2018/Case.ImageToDraftingView/Case.ImageToDraftingView/Data/clsPara.vb:15-72 \u2014 before extracting anything, compare \u00602015/Case.ImageToDraftingView/Case.ImageToDraftingView/Data/clsPara.vb\u0060 and \u00602016/Case.ImageToDraftingView/Case.ImageToDraftingView/Data/clsPara.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ImageToDraftingView/Case.ImageToDraftingView/Data/clsPara.vb"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d8bf15203bb0636ca6125d3aa7c72362ec31641db9b1edbf84ff13b3b132567"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (64 lines \u00D7 4): 2015/Case.ImageToDraftingView/Case.ImageToDraftingView/Data/clsSettings.vb:11-74 | 2016/Case.ImageToDraftingView/Case.ImageToDraftingView/Data/clsSettings.vb:11-74 | 2017/Case.ImageToDraftingView/Case.ImageToDraftingView/Data/clsSettings.vb:11-74 | 2018/Case.ImageToDraftingView/Case.ImageToDraftingView/Data/clsSettings.vb:11-74 \u2014 before extracting anything, compare \u00602015/Case.ImageToDraftingView/Case.ImageToDraftingView/Data/clsSettings.vb\u0060 and \u00602016/Case.ImageToDraftingView/Case.ImageToDraftingView/Data/clsSettings.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ImageToDraftingView/Case.ImageToDraftingView/Data/clsSettings.vb"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8dd3a70ccdc4427709060c9588f23726cd29e75edf671450f07cddb58ccb08e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (168 lines \u00D7 16): 2015/Case.LineChanger/Case.LineChanger/Data/clsPara.vb:20-187 | 2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsPara.vb:20-187 | 2015/Case.RevClouds/Case.RevClouds/Data/clsPara.vb:20-187 | 2015/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsPara.vb:20-187 | 2016/Case.LineChanger/Case.LineChanger/Data/clsPara.vb:20-187 | 2016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsPara.vb:20-187 | 2016/Case.RevClouds/Case.RevClouds/Data/clsPara.vb:20-187 | 2016/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsPara.vb:20-187 | 2017/Case.LineChanger/Case.LineChanger/Data/clsPara.vb:20-187 | 2017/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsPara.vb:20-187 | 2017/Case.RevClouds/Case.RevClouds/Data/clsPara.vb:20-187 | 2017/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsPara.vb:20-187 | 2018/Case.LineChanger/Case.LineChanger/Data/clsPara.vb:20-187 | 2018/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsPara.vb:20-187 | 2018/Case.RevClouds/Case.RevClouds/Data/clsPara.vb:20-187 | 2018/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsPara.vb:20-187 \u2014 before extracting anything, compare \u00602015/Case.LineChanger/Case.LineChanger/Data/clsPara.vb\u0060 and \u00602015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsPara.vb\u0060 as WHOLE FILES: 97% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LineChanger/Case.LineChanger/Data/clsPara.vb"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"e088c96157ac42e81a78c2f9e12ec1341e29246b95157f69b427d51356070e14"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (151 lines \u00D7 4): 2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb:36-186 | 2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb:36-186 | 2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb:36-186 | 2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb:36-186 \u2014 before extracting anything, compare \u00602015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb\u0060 and \u00602016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ca0025bd494f3cf58222957c54ebcfe72acf91287d853b1acc75d0db32bd744"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): 2015/Case.Navis2BCF/Case.Navis2BCF/Converters.cs:33-44 | 2016/Case.Navis2BCF/Case.Navis2BCF/Converters.cs:33-44 | 2017/Case.Navis2BCF/Case.Navis2BCF/Converters.cs:33-44 | 2018/Case.Navis2BCF/Case.Navis2BCF/Converters.cs:33-44 \u2014 before extracting anything, compare \u00602015/Case.Navis2BCF/Case.Navis2BCF/Converters.cs\u0060 and \u00602016/Case.Navis2BCF/Case.Navis2BCF/Converters.cs\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Converters.cs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"708dcd2221f24e7dc1ab178a03c3cd1392d352e49213944c44b9dad9d954b6bf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (51 lines \u00D7 4): 2015/Case.Navis2BCF/Case.Navis2BCF/ObservableCollections.cs:24-74 | 2016/Case.Navis2BCF/Case.Navis2BCF/ObservableCollections.cs:24-74 | 2017/Case.Navis2BCF/Case.Navis2BCF/ObservableCollections.cs:24-74 | 2018/Case.Navis2BCF/Case.Navis2BCF/ObservableCollections.cs:24-74 \u2014 before extracting anything, compare \u00602015/Case.Navis2BCF/Case.Navis2BCF/ObservableCollections.cs\u0060 and \u00602016/Case.Navis2BCF/Case.Navis2BCF/ObservableCollections.cs\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.Navis2BCF/Case.Navis2BCF/ObservableCollections.cs:24\u0060 it runs out through the closing brace of the declaration holding it and carries on into the declaration that follows \u2014 the window is the tail of one member plus the head of the next, so no call can be substituted for those exact lines, and the smallest declaration that contains all of them is the type they sit in. The repeated unit is the member each site sits in: where those members\u0027 bodies are the same, move one whole member to the shared location and have the others delegate to it; where the copies are a run of near-identical overloads or wrappers that differ only in their signatures, the repetition IS the run \u2014 a one-line delegation has no helper inside it to lift \u2014 so generate the run from the set it enumerates, or accept it and keep each member\u0027s own documentation with it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/ObservableCollections.cs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"91604cb18f3b06dfc27e1477d6d492e11d2f02b4fcd6cac8fe9e1ecfc2fc8423"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): 2015/Case.Navis2BCF/Case.Navis2BCF/Plugin.cs:33-40 | 2016/Case.Navis2BCF/Case.Navis2BCF/Plugin.cs:33-40 | 2017/Case.Navis2BCF/Case.Navis2BCF/Plugin.cs:33-40 | 2018/Case.Navis2BCF/Case.Navis2BCF/Plugin.cs:33-40 \u2014 before extracting anything, compare \u00602015/Case.Navis2BCF/Case.Navis2BCF/Plugin.cs\u0060 and \u00602016/Case.Navis2BCF/Case.Navis2BCF/Plugin.cs\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Plugin.cs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"46396a53d274385cdc4bd28a6cd0a5b479a3fcde8777f1e83559daab82c71ba8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (41 lines \u00D7 4): 2015/Case.ParallelWalls/Case.ParallelWalls/Data/clsElementSelection.cs:56-96 | 2016/Case.ParallelWalls/Case.ParallelWalls/Data/clsElementSelection.cs:56-96 | 2017/Case.ParallelWalls/Case.ParallelWalls/Data/clsElementSelection.cs:56-96 | 2018/Case.ParallelWalls/Case.ParallelWalls/Data/clsElementSelection.cs:51-91 \u2014 before extracting anything, compare \u00602015/Case.ParallelWalls/Case.ParallelWalls/Data/clsElementSelection.cs\u0060 and \u00602016/Case.ParallelWalls/Case.ParallelWalls/Data/clsElementSelection.cs\u0060 as WHOLE FILES: 98% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ParallelWalls/Case.ParallelWalls/Data/clsElementSelection.cs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"326576fc8e992e381b9a6d66c4ed38755a1e8211fc75cf13a9730b14e544c7b4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 4): 2015/Case.ParallelWalls/Case.ParallelWalls/Data/clsReferenceFilter.cs:31-53 | 2016/Case.ParallelWalls/Case.ParallelWalls/Data/clsReferenceFilter.cs:31-53 | 2017/Case.ParallelWalls/Case.ParallelWalls/Data/clsReferenceFilter.cs:31-53 | 2018/Case.ParallelWalls/Case.ParallelWalls/Data/clsReferenceFilter.cs:26-48 \u2014 before extracting anything, compare \u00602015/Case.ParallelWalls/Case.ParallelWalls/Data/clsReferenceFilter.cs\u0060 and \u00602016/Case.ParallelWalls/Case.ParallelWalls/Data/clsReferenceFilter.cs\u0060 as WHOLE FILES: 97% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. 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":"2015/Case.ParallelWalls/Case.ParallelWalls/Data/clsReferenceFilter.cs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e7ffe52cf1ee36662b84da46528563248d60fa1e0fd21f8e62404c0a4a76516"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 4): 2015/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallFilter.cs:12-35 | 2016/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallFilter.cs:12-35 | 2017/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallFilter.cs:12-35 | 2018/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallFilter.cs:12-35 \u2014 before extracting anything, compare \u00602015/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallFilter.cs\u0060 and \u00602016/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallFilter.cs\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. 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":"2015/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallFilter.cs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"a242156000fd92565599bfe74b1c14159ad5ecf8b0e5a5219a8153eb57a390cb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 4): 2015/Case.ParallelWalls/Case.ParallelWalls/UI/form_SplashScreen.cs:25-54 | 2016/Case.ParallelWalls/Case.ParallelWalls/UI/form_SplashScreen.cs:25-54 | 2017/Case.ParallelWalls/Case.ParallelWalls/UI/form_SplashScreen.cs:25-54 | 2018/Case.ParallelWalls/Case.ParallelWalls/UI/form_SplashScreen.cs:25-54 \u2014 before extracting anything, compare \u00602015/Case.ParallelWalls/Case.ParallelWalls/UI/form_SplashScreen.cs\u0060 and \u00602016/Case.ParallelWalls/Case.ParallelWalls/UI/form_SplashScreen.cs\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ParallelWalls/Case.ParallelWalls/UI/form_SplashScreen.cs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"96171f0310d93bb7349bec8d033ace6ae1033658eb465f48996798446cd13567"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (65 lines \u00D7 4): 2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsData.cs:14-78 | 2016/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsData.cs:14-78 | 2017/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsData.cs:14-78 | 2018/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsData.cs:14-78 \u2014 before extracting anything, compare \u00602015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsData.cs\u0060 and \u00602016/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsData.cs\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. 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":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsData.cs"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"155b267a18156f0778a8835ba46bdf9b17ab544f384a9883b5d433dc4d980021"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 4): 2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/UI/form_Progress.vb:11-32 | 2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/UI/form_Progress.vb:11-32 | 2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/UI/form_Progress.vb:11-32 | 2018/Case.RoomInsertionPoint/Case.RoomInsertionPoint/UI/form_Progress.vb:11-32 \u2014 before extracting anything, compare \u00602015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/UI/form_Progress.vb\u0060 and \u00602016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/UI/form_Progress.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/UI/form_Progress.vb"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"16b5ffb2f5008b0cd92084de9982c9c04aaf3fe58669fb0604a59f99cb0cfbfe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (89 lines \u00D7 4): 2015/Case.SharedParameters/Case.SharedParameters/Data/clsSettings.vb:22-110 | 2016/Case.SharedParameters/Case.SharedParameters/Data/clsSettings.vb:22-110 | 2017/Case.SharedParameters/Case.SharedParameters/Data/clsSettings.vb:22-110 | 2018/Case.SharedParameters/Case.SharedParameters/Data/clsSettings.vb:22-110 \u2014 before extracting anything, compare \u00602015/Case.SharedParameters/Case.SharedParameters/Data/clsSettings.vb\u0060 and \u00602016/Case.SharedParameters/Case.SharedParameters/Data/clsSettings.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/Data/clsSettings.vb"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f236b25a224f901afe73f6d385365340142b7af21264cc9170de4b84497cf7a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (34 lines \u00D7 4): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsLinks.vb:15-48 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsLinks.vb:15-48 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsLinks.vb:15-48 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsLinks.vb:15-48 \u2014 before extracting anything, compare \u00602015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsLinks.vb\u0060 and \u00602016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsLinks.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsLinks.vb"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8684ae40b281f0b6232619dcca0f0787561cf13f516a33fb023e133bcbf59e3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (44 lines \u00D7 4): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSheets.vb:15-58 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSheets.vb:15-58 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSheets.vb:15-58 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSheets.vb:15-58 \u2014 before extracting anything, compare \u00602015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSheets.vb\u0060 and \u00602016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSheets.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSheets.vb"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"c84d24ad93084d815ef07efa3772e17cf4a5f394f6d6fe2a01f4ffeaafd48010"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 4): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsViewType.vb:53-80 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsViewType.vb:53-80 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsViewType.vb:53-80 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsViewType.vb:53-80 \u2014 before extracting anything, compare \u00602015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsViewType.vb\u0060 and \u00602016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsViewType.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsViewType.vb"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"293ae4d825c11e995249f7c3b80588a18428acdcfefd9caf80f562b02dc59c68"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (75 lines \u00D7 4): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsViews.vb:15-89 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsViews.vb:15-89 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsViews.vb:15-89 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsViews.vb:15-89 \u2014 before extracting anything, compare \u00602015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsViews.vb\u0060 and \u00602016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsViews.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsViews.vb"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d6b24aeb75f85cff4b7dcaf18dd88184dc9c06001a4af4d03be88031638df05"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (35 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategory.vb:27-61 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategory.vb:27-61 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategory.vb:27-61 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategory.vb:27-61 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategory.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategory.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategory.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"4036a1ff74d9fc47625542ab733b2d6cb102d8dee78ff7d11a1595352b768c11"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 2): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Name.vb:12-41 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Name.vb:12-41 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Name.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Name.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Name.vb"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"4249c64aeb627dfa3d7c6898611dc08b1e7b6b0b2f7c7d5d3d495bffba953fe9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (48 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Progress.vb:12-59 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Progress.vb:12-59 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Progress.vb:12-59 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Progress.vb:12-59 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Progress.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Progress.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Progress.vb"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fec8867d33f2ef384ca5702377f2c0b28e35148a6452da045cdd26ae6d6f9b5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (71 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_SmartSync.vb:15-85 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_SmartSync.vb:15-85 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_SmartSync.vb:15-85 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_SmartSync.vb:15-85 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_SmartSync.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_SmartSync.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_SmartSync.vb"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6a001d6b2e3027a237fce3f3e4703f498de75cf35f6653c70311f73005f6353"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (33 lines \u00D7 4): 2015/Case.Subs.KeyMatcher/Data/clsSettings.cs:40-72 | 2016/Case.Subs.KeyMatcher/Data/clsSettings.cs:40-72 | 2017/Case.Subs.KeyMatcher/Data/clsSettings.cs:40-72 | 2018/Case.Subs.KeyMatcher/Data/clsSettings.cs:40-72 \u2014 before extracting anything, compare \u00602015/Case.Subs.KeyMatcher/Data/clsSettings.cs\u0060 and \u00602016/Case.Subs.KeyMatcher/Data/clsSettings.cs\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.KeyMatcher/Data/clsSettings.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"882b831a82599c352bcbf7f5c38e1e5b77828f6cfcd07f07de052b2afce3d9d2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): 2015/Case.Subs.KeyMatcher/ViewModels/clsViewModelBase.cs:35-46 | 2016/Case.Subs.KeyMatcher/ViewModels/clsViewModelBase.cs:35-46 | 2017/Case.Subs.KeyMatcher/ViewModels/clsViewModelBase.cs:35-46 | 2018/Case.Subs.KeyMatcher/ViewModels/clsViewModelBase.cs:35-46 \u2014 before extracting anything, compare \u00602015/Case.Subs.KeyMatcher/ViewModels/clsViewModelBase.cs\u0060 and \u00602016/Case.Subs.KeyMatcher/ViewModels/clsViewModelBase.cs\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.KeyMatcher/ViewModels/clsViewModelBase.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"c315417531f92bdfdb21891d42898ef93c84302014a8562f321bdc7b374dede7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (143 lines \u00D7 4): 2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb:56-198 | 2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb:56-198 | 2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb:56-198 | 2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb:56-198 \u2014 before extracting anything, compare \u00602015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"3153a4cd363ff2b369547f2872c9c43d29429758b69bad674035c64718bab9d8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (83 lines \u00D7 4): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/clsSettings.vb:18-100 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/clsSettings.vb:18-100 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/clsSettings.vb:18-100 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/clsSettings.vb:18-100 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/clsSettings.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/clsSettings.vb"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3312ae17bf095a2866ec98a4a024ca004d0f001fe72f4143f9d7109f4602a1d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (197 lines \u00D7 4): 2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSettings.vb:21-217 | 2016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSettings.vb:21-217 | 2017/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSettings.vb:21-217 | 2018/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSettings.vb:21-217 \u2014 before extracting anything, compare \u00602015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSettings.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSettings.vb"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e74e4fc22044a99e5c101a839e58845a468ebee18f4bba434b1cc299b671b29"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (63 lines \u00D7 4): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsPara.vb:24-86 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsPara.vb:24-86 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsPara.vb:24-86 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsPara.vb:24-86 \u2014 before extracting anything, compare \u00602015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsPara.vb\u0060 and \u00602016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsPara.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsPara.vb"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5319b28afc45f6e15ea26a03527eaaf5ba1f831eec8fde12b1a1cab71757e5a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (47 lines \u00D7 4): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsRoomFamily.vb:14-60 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsRoomFamily.vb:14-60 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsRoomFamily.vb:14-60 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsRoomFamily.vb:14-60 \u2014 before extracting anything, compare \u00602015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsRoomFamily.vb\u0060 and \u00602016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsRoomFamily.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsRoomFamily.vb"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"f06d3b5264b72527af1251014076cdd21e3f85bc652534d28f7bcd84962f1997"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (139 lines \u00D7 4): 2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSettings.vb:21-159 | 2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSettings.vb:21-159 | 2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSettings.vb:21-159 | 2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSettings.vb:21-159 \u2014 before extracting anything, compare \u00602015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSettings.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSettings.vb"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c71d12d5574c61a4002ea9360ac370f027857131338ba8118f63ed0d8409843"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 4): 2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Progress.vb:13-37 | 2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Progress.vb:13-37 | 2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Progress.vb:13-37 | 2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Progress.vb:13-37 \u2014 before extracting anything, compare \u00602015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Progress.vb\u0060 and \u00602016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Progress.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Progress.vb"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"aee435c0365f3d6a2d93678f6cdced4e9676a739299e7dbe1f8d9ad1739c60f1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (66 lines \u00D7 4): 2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsView.vb:27-92 | 2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsView.vb:27-92 | 2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsView.vb:27-92 | 2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsView.vb:27-92 \u2014 before extracting anything, compare \u00602015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsView.vb\u0060 and \u00602016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsView.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsView.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"eba1a26d82ae1c80e1b05bae66d14d35a71118a93b4c64be3be6363e15ab0911"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (83 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsFam.vb:30-112 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsFam.vb:30-112 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsFam.vb:30-112 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsFam.vb:30-112 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsFam.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsFam.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsFam.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"8069705e53cc7edaabe34051ebbbc43eccf041198ed53ffcecfdd26700020940"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (280 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb:23-302 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb:23-302 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb:23-302 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb:23-302 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"2be5da2a7e1abed9314ff48352bc75b0dac1cb37d6f67ff9a02516e8ed184299"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Progress.vb:14-39 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Progress.vb:14-39 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Progress.vb:14-39 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Progress.vb:14-39 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Progress.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Progress.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Progress.vb"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3483a1f14f226d2161f4bf27c958e9bc2768d8e9daf6364246b2e010e2d8ae8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (56 lines \u00D7 4): 2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSettings.vb:38-93 | 2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSettings.vb:38-93 | 2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSettings.vb:38-93 | 2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSettings.vb:38-93 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSettings.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSettings.vb"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"74c576ebadb428d13d6e594b8fdf5211aff174afa604b7830c6d27a6048bd315"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (78 lines \u00D7 4): 2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViewTemplates.vb:27-104 | 2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViewTemplates.vb:27-104 | 2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViewTemplates.vb:27-104 | 2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViewTemplates.vb:27-104 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViewTemplates.vb\u0060 and \u00602016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViewTemplates.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViewTemplates.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c60d990122ff9324449086182dead7f17b140d22a7840704f9a94ab3b7dea66"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (85 lines \u00D7 4): 2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViews.vb:25-109 | 2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViews.vb:25-109 | 2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViews.vb:25-109 | 2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViews.vb:25-109 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViews.vb\u0060 and \u00602016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViews.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"75288ec7d55cf0e57938aad17c46456eccff326d7a845fc23574dccf1864ac9b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (121 lines \u00D7 4): 2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemType.vb:19-139 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemType.vb:19-139 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemType.vb:19-139 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemType.vb:19-139 \u2014 before extracting anything, compare \u00602015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemType.vb\u0060 and \u00602016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemType.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u00602015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemType.vb:19\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":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemType.vb"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"794d64a13dd453a017abe64fdbc620c45add556ada4927a448af3c6c3d87e814"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (178 lines \u00D7 4): 2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb:24-201 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb:24-201 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb:24-201 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb:24-201 \u2014 before extracting anything, compare \u00602015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"76274218f6a656dfd1171c1c62a7836d0759c5e2d238cf5b41e6a4035afb63af"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 2): 2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Progress.vb:12-41 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Progress.vb:12-41 \u2014 before extracting anything, compare \u00602015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Progress.vb\u0060 and \u00602016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Progress.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Progress.vb"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"4263755e066a7ae73e6f72fe87f017f43f88dc6939e8abc053a0126627e1167f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (74 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsDesignOption.vb:19-92 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsDesignOption.vb:19-92 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsDesignOption.vb:19-92 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsDesignOption.vb:19-92 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsDesignOption.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsDesignOption.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsDesignOption.vb"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe93bde117b443dd54aec142ccd04e2938c0c81bc062e98b7bef0313717fe8fa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (48 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsLevel.vb:17-64 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsLevel.vb:17-64 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsLevel.vb:17-64 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsLevel.vb:17-64 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsLevel.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsLevel.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsLevel.vb"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"86a6c2c78b937c52b6a64ddec8f7acef14e44495e281cb79e143d495006c9902"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (68 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsView.vb:25-92 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsView.vb:25-92 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsView.vb:25-92 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsView.vb:25-92 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsView.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsView.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsView.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"732a8c7002c266fa3f7464aae765a24d13e089032e0038a2211445cec9cc0bc1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (98 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/My Project/MyExtensions/MyWpfExtension.vb:20-117 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/My Project/MyExtensions/MyWpfExtension.vb:20-117 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/My Project/MyExtensions/MyWpfExtension.vb:20-117 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/My Project/MyExtensions/MyWpfExtension.vb:20-117 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/My Project/MyExtensions/MyWpfExtension.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/My Project/MyExtensions/MyWpfExtension.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/My Project/MyExtensions/MyWpfExtension.vb"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a9877e0167fb14cf60e8e41c397f8ae163c4081b18d11d8018e39c59bc52f94"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (55 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ItemSelection.xaml.vb:13-67 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ItemSelection.xaml.vb:13-67 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ItemSelection.xaml.vb:13-67 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ItemSelection.xaml.vb:13-67 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ItemSelection.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ItemSelection.xaml.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ItemSelection.xaml.vb"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8af9fb11af9605ad51ad94d85bd81ea8e685e302c5c0501e210ddd7442e42c4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (60 lines \u00D7 4): 2015/Case.ViewTemplates/Case.ViewTemplates/Data/clsSettings.vb:25-84 | 2016/Case.ViewTemplates/Case.ViewTemplates/Data/clsSettings.vb:25-84 | 2017/Case.ViewTemplates/Case.ViewTemplates/Data/clsSettings.vb:25-84 | 2018/Case.ViewTemplates/Case.ViewTemplates/Data/clsSettings.vb:25-84 \u2014 before extracting anything, compare \u00602015/Case.ViewTemplates/Case.ViewTemplates/Data/clsSettings.vb\u0060 and \u00602016/Case.ViewTemplates/Case.ViewTemplates/Data/clsSettings.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewTemplates/Case.ViewTemplates/Data/clsSettings.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"230bd24bf9a13a4a7b3a790b5f83fe042516c65c33d879640a84445d3db39c2e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (85 lines \u00D7 4): 2015/Case.ViewTemplates/Case.ViewTemplates/Data/clsViews.vb:25-109 | 2016/Case.ViewTemplates/Case.ViewTemplates/Data/clsViews.vb:25-109 | 2017/Case.ViewTemplates/Case.ViewTemplates/Data/clsViews.vb:25-109 | 2018/Case.ViewTemplates/Case.ViewTemplates/Data/clsViews.vb:25-109 \u2014 before extracting anything, compare \u00602015/Case.ViewTemplates/Case.ViewTemplates/Data/clsViews.vb\u0060 and \u00602016/Case.ViewTemplates/Case.ViewTemplates/Data/clsViews.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewTemplates/Case.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"e213e40a713909f52bb92f2d4b8075a0536c1bd03801abe62d7187a74a739445"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (93 lines \u00D7 4): 2015/Case.ViewportReporting/Case.ViewportReporting/Data/clsSheetViewports.vb:19-111 | 2016/Case.ViewportReporting/Case.ViewportReporting/Data/clsSheetViewports.vb:19-111 | 2017/Case.ViewportReporting/Case.ViewportReporting/Data/clsSheetViewports.vb:19-111 | 2018/Case.ViewportReporting/Case.ViewportReporting/Data/clsSheetViewports.vb:19-111 \u2014 before extracting anything, compare \u00602015/Case.ViewportReporting/Case.ViewportReporting/Data/clsSheetViewports.vb\u0060 and \u00602016/Case.ViewportReporting/Case.ViewportReporting/Data/clsSheetViewports.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewportReporting/Case.ViewportReporting/Data/clsSheetViewports.vb"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"e60b81b6771cb908921be019b896d558d290ab661907c4b979c437f8da3e8326"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (98 lines \u00D7 4): 2015/Case.ViewportReporting/Case.ViewportReporting/My Project/MyExtensions/MyWpfExtension.vb:20-117 | 2016/Case.ViewportReporting/Case.ViewportReporting/My Project/MyExtensions/MyWpfExtension.vb:20-117 | 2017/Case.ViewportReporting/Case.ViewportReporting/My Project/MyExtensions/MyWpfExtension.vb:20-117 | 2018/Case.ViewportReporting/Case.ViewportReporting/My Project/MyExtensions/MyWpfExtension.vb:20-117 \u2014 before extracting anything, compare \u00602015/Case.ViewportReporting/Case.ViewportReporting/My Project/MyExtensions/MyWpfExtension.vb\u0060 and \u00602016/Case.ViewportReporting/Case.ViewportReporting/My Project/MyExtensions/MyWpfExtension.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewportReporting/Case.ViewportReporting/My Project/MyExtensions/MyWpfExtension.vb"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"84cf60a3218a0d06d6f933508850386d474fffec17beb983570984426da4a856"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (53 lines \u00D7 3): 2015/Case.ViewportReporting/Case.ViewportReporting/UI/form_Main.xaml.vb:14-66 | 2016/Case.ViewportReporting/Case.ViewportReporting/UI/form_Main.xaml.vb:14-66 | 2017/Case.ViewportReporting/Case.ViewportReporting/UI/form_Main.xaml.vb:14-66 \u2014 before extracting anything, compare \u00602015/Case.ViewportReporting/Case.ViewportReporting/UI/form_Main.xaml.vb\u0060 and \u00602016/Case.ViewportReporting/Case.ViewportReporting/UI/form_Main.xaml.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewportReporting/Case.ViewportReporting/UI/form_Main.xaml.vb"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"263f8508eac500c217b3ead986dae13a7bb9f9064b10f12da27508776e9c97b1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 2): 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Name.vb:14-43 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Name.vb:14-43 \u2014 before extracting anything, compare \u00602017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Name.vb\u0060 and \u00602018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Name.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Name.vb"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"36951cff0bcd9e174f0eed3e953002661c7c6687764e9c0c5b0a054ac9978bf7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 2): 2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Progress.vb:12-41 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Progress.vb:12-41 \u2014 before extracting anything, compare \u00602017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Progress.vb\u0060 and \u00602018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Progress.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Progress.vb"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5b6caaeea482293dc0071b8948615a3bba3f2d2bf492731f2b3693ca918e653"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb:71-77 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb:71-77 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb:71-77 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb:71-77 \u2014 before extracting anything, compare \u00602015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 97 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"95c54d28f74ee01345a7844bc7682e21ea8697d9515fba5acc58f40305930cc8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 4): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb:181-199 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb:181-199 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb:181-199 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb:181-199 \u2014 before extracting anything, compare \u00602015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 97 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"b237ac9f2f385516382c4ed2340fa0356d4eb1ead273fb712d56085080b2335e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 28): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSortableBindingList.vb:75-79 | 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSortableBindingList.vb:75-79 | 2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSortableBindingList.vb:75-79 | 2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSortableBindingList.vb:75-79 | 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSortableBindingList.vb:75-79 | 2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSortableBindingList.vb:75-79 | 2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSortableBindingList.vb:75-79 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSortableBindingList.vb:75-79 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSortableBindingList.vb:75-79 | 2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSortableBindingList.vb:75-79 | 2016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSortableBindingList.vb:75-79 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSortableBindingList.vb:75-79 | 2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSortableBindingList.vb:75-79 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSortableBindingList.vb:75-79 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSortableBindingList.vb:75-79 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSortableBindingList.vb:75-79 | 2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSortableBindingList.vb:75-79 | 2017/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSortableBindingList.vb:75-79 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSortableBindingList.vb:75-79 | 2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSortableBindingList.vb:75-79 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSortableBindingList.vb:75-79 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSortableBindingList.vb:75-79 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSortableBindingList.vb:75-79 | 2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSortableBindingList.vb:75-79 | 2018/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSortableBindingList.vb:75-79 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSortableBindingList.vb:75-79 | 2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSortableBindingList.vb:75-79 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSortableBindingList.vb:75-79 \u2014 before extracting anything, compare \u00602015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSortableBindingList.vb\u0060 and \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSortableBindingList.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 36 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSortableBindingList.vb"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd93eb2800a809a34a392a23bd90271193ddbe69e8586c1ff7efa2708d6ef795"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 44): 2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSortableBindingList.vb:85-93 | 2015/Case.LightingLayout/Case.LightingLayout/Data/clsSortableBindingList.vb:85-93 | 2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSortableBindingList.vb:85-93 | 2015/Case.RevClouds/Case.RevClouds/Data/clsSortableBindingList.vb:85-93 | 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSortableBindingList.vb:83-91 | 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSortableBindingList.vb:83-91 | 2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSortableBindingList.vb:83-91 | 2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSortableBindingList.vb:83-91 | 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSortableBindingList.vb:83-91 | 2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSortableBindingList.vb:83-91 | 2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSortableBindingList.vb:83-91 | 2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSortableBindingList.vb:85-93 | 2016/Case.LightingLayout/Case.LightingLayout/Data/clsSortableBindingList.vb:85-93 | 2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSortableBindingList.vb:85-93 | 2016/Case.RevClouds/Case.RevClouds/Data/clsSortableBindingList.vb:85-93 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSortableBindingList.vb:83-91 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSortableBindingList.vb:83-91 | 2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSortableBindingList.vb:83-91 | 2016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSortableBindingList.vb:83-91 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSortableBindingList.vb:83-91 | 2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSortableBindingList.vb:83-91 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSortableBindingList.vb:83-91 | 2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSortableBindingList.vb:85-93 | 2017/Case.LightingLayout/Case.LightingLayout/Data/clsSortableBindingList.vb:85-93 | 2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSortableBindingList.vb:85-93 | 2017/Case.RevClouds/Case.RevClouds/Data/clsSortableBindingList.vb:85-93 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSortableBindingList.vb:83-91 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSortableBindingList.vb:83-91 | 2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSortableBindingList.vb:83-91 | 2017/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSortableBindingList.vb:83-91 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSortableBindingList.vb:83-91 | 2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSortableBindingList.vb:83-91 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSortableBindingList.vb:83-91 | 2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSortableBindingList.vb:85-93 | 2018/Case.LightingLayout/Case.LightingLayout/Data/clsSortableBindingList.vb:85-93 | 2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSortableBindingList.vb:85-93 | 2018/Case.RevClouds/Case.RevClouds/Data/clsSortableBindingList.vb:85-93 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSortableBindingList.vb:83-91 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSortableBindingList.vb:83-91 | 2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSortableBindingList.vb:83-91 | 2018/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSortableBindingList.vb:83-91 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSortableBindingList.vb:83-91 | 2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSortableBindingList.vb:83-91 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSortableBindingList.vb:83-91 \u2014 before extracting anything, compare \u00602015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSortableBindingList.vb\u0060 and \u00602015/Case.LightingLayout/Case.LightingLayout/Data/clsSortableBindingList.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 32 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSortableBindingList.vb"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"e10019e637d95f2db766a8a6a7ea929a3ac079b02c64187d24d554c36a7b85d9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:452-461 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:452-461 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:452-461 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:452-461 \u2014 before extracting anything, compare \u00602015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb\u0060 and \u00602016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 323 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":452}}}],"partialFingerprints":{"codehealthFindingId/v1":"09d23d5805302526941b38f629b5f75a4a5b8179f1aebca38b0030fa75f1bcf8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:473-482 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:473-482 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:473-482 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:473-482 \u2014 before extracting anything, compare \u00602015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb\u0060 and \u00602016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 323 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":473}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd03eabd561d9f7f1fb5626c20136e1bc1259e713b101fa47716d10896dbdf36"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:536-545 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:536-545 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:536-545 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:536-545 \u2014 before extracting anything, compare \u00602015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb\u0060 and \u00602016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 323 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":536}}}],"partialFingerprints":{"codehealthFindingId/v1":"48cba66459325130183def756586283f8b8e0c7dd66d681991c0bfbf56898d51"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): 2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:557-566 | 2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:557-566 | 2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:557-566 | 2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb:557-566 \u2014 before extracting anything, compare \u00602015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb\u0060 and \u00602016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 323 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":557}}}],"partialFingerprints":{"codehealthFindingId/v1":"d65b2e8b68bf4f9d2f4f3deee83ba040e5fb0aaedde518f5712a9af47ec2cc17"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:350-355 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:350-355 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:350-355 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb:350-355 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 109 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb"},"region":{"startLine":350}}}],"partialFingerprints":{"codehealthFindingId/v1":"17d998f762403a0affc82cb3bf4759b809048f8f038a7831da467029c9a3623e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb:98-114 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb:98-114 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb:98-114 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb:98-114 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 402 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf5fa381b549b2bd4f99a3c7e31a8b2a164f637ac0febafe19eea5616094e346"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:413-430 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:413-430 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:413-430 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:413-430 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 610 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"f982aaf43850272015db96c5054bf8cb79ff44e6d99a813f1f432f98d7411b9c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:441-459 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:441-459 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 610 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":441}}}],"partialFingerprints":{"codehealthFindingId/v1":"55e59106f6dd8d45068d567563ba0c67637a8922b004568bdd1a17674b3b7eb6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:472-476 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:472-476 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:472-476 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:472-476 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 610 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c52c9c78e12464d73beca16910c6fc5a6ef8a0641966d1735fdd4ea37c3b6dd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27 lines \u00D7 8): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:1018-1044 | 2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:391-417 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:1018-1044 | 2016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:391-417 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:1018-1044 | 2017/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:391-417 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb:1018-1044 | 2018/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb:391-417 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 610 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":1018}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae97a6a2f9a07d588f65cfaa9725326cb1c5081bba62c9160b1cca353d5b3611"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:291-315 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:291-315 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:291-315 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:291-315 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 422 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"81dba792aa142c38a8c7cd440d6a9da4e142835cb873c473b2500f4f1e36bf9e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:488-499 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:488-499 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:488-499 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:488-499 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 422 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":488}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6f534ef9336b4ecc325aabf1f47370981d7290e9399226fa95f8a4467244e08"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:671-682 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:671-682 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:671-682 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:671-682 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 422 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":671}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf40374a4b1b51880d16bbdd7442627410b63f05504f0456f5b01f96854e0a21"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:701-725 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:701-725 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:701-725 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:701-725 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 422 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":701}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b950afd0cbe8b8d8162673339a2d4623db4209540025721446ad8b3a96b9fe6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (163 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:744-906 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:744-906 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:744-906 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb:744-906 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 422 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":744}}}],"partialFingerprints":{"codehealthFindingId/v1":"027ffea6c48456df0f6010a6a8b7c8c0c98e851579642c6c0c9c2b67e71bba52"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:379-394 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:379-394 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:379-394 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb:379-394 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 291 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":379}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0a5e83b7110f44a7b81b7a51ec7fb8e2c6bd66294c8ca651cb231ce48241779"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb:34-49 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb:34-49 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb:34-49 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb:34-49 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 81 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a217d76d819c4d4674390381f048dd603f1d62ba63ded97c226ca9928f23ad6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb:60-80 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb:60-80 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb:60-80 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb:60-80 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 81 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"df2ce551d641768af1a1a95c2f2c1e82194d373e5e98805a743202a11797c940"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (50 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:524-573 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:524-573 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:524-573 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:524-573 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 281 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":524}}}],"partialFingerprints":{"codehealthFindingId/v1":"15151a4ace72ea6b7a056a9cc1c4f3f4773c4b0c4e9e942e5fbf0fb0d01d0c31"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 4): 2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:956-975 | 2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:956-975 | 2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:956-975 | 2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb:956-975 \u2014 before extracting anything, compare \u00602015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb\u0060 and \u00602016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 281 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":956}}}],"partialFingerprints":{"codehealthFindingId/v1":"2db65e10b7fefaf8fff159e21384d7807fba64ba47f3e8d1f987206237f48290"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 4): 2015/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb:78-83 | 2016/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb:78-83 | 2017/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb:78-83 | 2018/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb:78-83 \u2014 before extracting anything, compare \u00602015/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 177 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bd67415b3250a61d58a6b96888ccc72e9b36ca134d61521a0c9fcc12d4d6ae7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 4): 2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb:272-284 | 2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb:272-284 | 2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb:272-284 | 2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb:272-284 \u2014 before extracting anything, compare \u00602015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb\u0060 and \u00602016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 214 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"027143e76e11075885061b5c60be6cd83e2be860469e035de947bcf346663f08"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 4): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:36-41 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:36-41 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:36-41 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb:36-41 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 257 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/Data/Translators/RVTFamilyMassUtils.vb"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"b946a62c432b9cefd6c91dc5d8705b6a5340a914d11f8076f6bb465524ea3be9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:27-37 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:27-37 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 299 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"f704fef0e8e407329bb68545b2ba8fc284a66a361d4f6cf06bac44b4d945248a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 4): 2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:371-383 | 2016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:371-383 | 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:371-383 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:371-383 \u2014 before extracting anything, compare \u00602015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb\u0060 and \u00602016/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 299 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"f633d3f4f07d1a6646081479ec562fd98abc7245b00add67449b8269ac203d03"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): 2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsFamilyType.vb:130-136 | 2016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsFamilyType.vb:130-136 | 2017/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsFamilyType.vb:130-136 | 2018/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsFamilyType.vb:130-136 \u2014 before extracting anything, compare \u00602015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsFamilyType.vb\u0060 and \u00602016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsFamilyType.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsFamilyType.vb"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"4374e9b913caa8bc114bd24e7a7ea2392d5643ec691e5a1a4dfbda9e5947d982"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (78 lines \u00D7 4): 2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:367-444 | 2016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:367-444 | 2017/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:367-444 | 2018/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb:367-444 \u2014 before extracting anything, compare \u00602015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb\u0060 and \u00602016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 215 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":367}}}],"partialFingerprints":{"codehealthFindingId/v1":"78676809800d4074d11f12fa45ebe577adb23b50670257b77664c91b89b9ce86"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 4): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:571-590 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:571-590 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:571-590 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:571-590 \u2014 before extracting anything, compare \u00602015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 172 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":571}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c7f633e729597343dc2fb71106bff9b953a20580d30e3ae6ee7cb0569422ba6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:601-608 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:601-608 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:601-608 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb:601-608 \u2014 before extracting anything, compare \u00602015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 172 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":601}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbf02328b904a4f48efab28b08bed55130ff88a81b242c01518ebd7624e0f59b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 4): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb:154-168 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb:154-168 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb:154-168 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb:154-168 \u2014 before extracting anything, compare \u00602015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb\u0060 and \u00602016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"223eaf24677ab9ba0589c30fefdcf6f9d6ee04f873a956b81832afce55510396"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 4): 2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:456-474 | 2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:456-474 | 2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:456-474 | 2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb:456-474 \u2014 before extracting anything, compare \u00602015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb\u0060 and \u00602016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 500 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":456}}}],"partialFingerprints":{"codehealthFindingId/v1":"74eb2f9c82fa47f15845818645bf63d30d011a1338f98ec06bba031a06a0d0ca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 8): 2015/Case.SharedParameters/Case.SharedParameters/Data/clsSharedParameters.vb:54-58 | 2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb:79-83 | 2016/Case.SharedParameters/Case.SharedParameters/Data/clsSharedParameters.vb:54-58 | 2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb:79-83 | 2017/Case.SharedParameters/Case.SharedParameters/Data/clsSharedParameters.vb:54-58 | 2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb:79-83 | 2018/Case.SharedParameters/Case.SharedParameters/Data/clsSharedParameters.vb:54-58 | 2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb:79-83 \u2014 before extracting anything, compare \u00602015/Case.SharedParameters/Case.SharedParameters/Data/clsSharedParameters.vb\u0060 and \u00602015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb\u0060 as WHOLE FILES: 85% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"95fb8a481717554ffdbd58395dd6ea27475da8ba96cc8a08578829a22e3b3ab9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 8): 2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:251-263 | 2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:318-330 | 2016/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:251-263 | 2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:318-330 | 2017/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:251-263 | 2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:318-330 | 2018/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:246-258 | 2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:318-330 \u2014 before extracting anything, compare \u00602015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb\u0060 and \u00602015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 94 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0817737b5299d753c77805d281e0dc19f2e5d1d40bb1dd21f58c37e631598b6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 8): 2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:276-288 | 2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:343-355 | 2016/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:276-288 | 2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:343-355 | 2017/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:276-288 | 2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:343-355 | 2018/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:271-283 | 2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:343-355 \u2014 before extracting anything, compare \u00602015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb\u0060 and \u00602015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 94 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"df37cd056da5b719ba9f641bbdaec548734adbf0a1b26396c7e3118a18b96ab6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 8): 2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:301-313 | 2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:368-380 | 2016/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:301-313 | 2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:368-380 | 2017/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:301-313 | 2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:368-380 | 2018/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:296-308 | 2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:368-380 \u2014 before extracting anything, compare \u00602015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb\u0060 and \u00602015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 94 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b16f7c1be79b4c73ed6e27141e383cceffaf41e12d0ace2c6b350c683542aec"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 8): 2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:326-338 | 2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:393-405 | 2016/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:326-338 | 2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:393-405 | 2017/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:326-338 | 2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:393-405 | 2018/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:321-333 | 2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:393-405 \u2014 before extracting anything, compare \u00602015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb\u0060 and \u00602015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 94 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"d07ba225e5c9c1cd1ba297d928f69e22a4a22be78c1a56f905dec76a19fc305a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): 2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:418-427 | 2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:418-427 \u2014 before extracting anything, compare \u00602015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb\u0060 and \u00602016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 201 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":418}}}],"partialFingerprints":{"codehealthFindingId/v1":"498d5a252638cc99d83ac96e169d20490773474466915ba9c0ff404c3d6259da"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (114 lines \u00D7 4): 2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:114-227 | 2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:114-227 | 2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:114-227 | 2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb:114-227 \u2014 before extracting anything, compare \u00602015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb\u0060 and \u00602016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 264 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f9adb13389c2c65f3649b6eb33478256bf313a20ffb3e80226ae437298e6bc6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb:34-55 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb:34-55 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb:34-55 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb:34-55 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 110 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f658ee02dad0596f06c98d3d51bc0020a21442825807d91b204f63fd4456250"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:53-61 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:53-61 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:53-61 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:53-61 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 217 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"817b9e158a5d961cbfd42e674a4cf27f28f24249743fd4bf8cfecda5253c7437"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:83-91 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:83-91 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:83-91 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:83-91 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 217 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f057312d72aee9d3b81aef3ad6596a3e06591d909095ff0635f0ab168862419"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:202-216 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:202-216 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:202-216 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:202-216 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 217 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"7716b5f005c38a4de5b09181a0838fe87615e4b70d7167a51fa615a688fb7bc2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:230-241 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:230-241 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:230-241 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:230-241 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 217 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"006ede8ae507454acd131cf5fe1a83301d89ab98f959b09d70e47f45a502e73b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:382-397 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:382-397 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:382-397 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:382-397 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 217 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":382}}}],"partialFingerprints":{"codehealthFindingId/v1":"09fbef143dfae6c399f2bb18f5cd93c01413ccb61d417b5b1b99ec32391828a3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:438-452 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:438-452 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:438-452 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb:438-452 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 217 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":438}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe62db002342e412e539e691db29d6f73a140bc151042c04ead8d828c72bfd3f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:253-265 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:253-265 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:253-265 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb:253-265 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 247 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0a3222e4bd0ba98ef3ca8599f2830e8a1f902c851d7ff7fe7fd0d060f399caf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb:129-144 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb:129-144 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb:129-144 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb:129-144 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 68 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a0314a0691e7005c4c8d16c714fe537c11c2cc1c3908853414502fd118c394a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb:155-169 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb:155-169 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb:155-169 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb:155-169 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 68 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"6faf178394c9869929ebfc3b3171396bbb95419e18ae8501f5d36ccd1bad32e3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb:294-300 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb:294-300 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb:294-300 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb:294-300 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 283 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2cf6c00054affc5ba815fd2016e996e484aa6a360a94f7c11ffeb8c86b58c30"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSortableBindingList.vb:87-95 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSortableBindingList.vb:87-95 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSortableBindingList.vb:87-95 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSortableBindingList.vb:87-95 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSortableBindingList.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSortableBindingList.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSortableBindingList.vb"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"89ffc433b9fe09deb1522e3f5230f8a1d21e1d01e3de58682bb91af91b19b4ac"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_AddFamily.vb:84-102 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_AddFamily.vb:84-102 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_AddFamily.vb:84-102 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_AddFamily.vb:84-102 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_AddFamily.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_AddFamily.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_AddFamily.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"427913bdd638c0d8449ff39b01841b970a055bef83088cef6220231467a27f76"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:702-710 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:702-710 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:702-710 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:702-710 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 467 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":702}}}],"partialFingerprints":{"codehealthFindingId/v1":"512b0a010e787fa4b6ca8ee62c4ff85b2a1ba91098280f6448ad77cbec4e1ab0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:714-722 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:714-722 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:714-722 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:714-722 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 467 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":714}}}],"partialFingerprints":{"codehealthFindingId/v1":"867f294aec2d684c04173354f2d6b7825d4bda23542fd4bedfbd0f42c59a142a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:726-734 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:726-734 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:726-734 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb:726-734 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 467 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":726}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea58e9002f9a50c7a2c4cc0ea7871aafa3287541a0ccbeb900698d44f66af64c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:230-249 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:230-249 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:230-249 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:230-249 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 330 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f5bfb406b1ae9098b67c0d186b55abee9863c86559ec57781057b57e4d18671"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:385-403 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:385-403 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:385-403 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb:385-403 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 330 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":385}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bfd0ab178cbd7f5776662f43297e7d5242528d254bfffdfb25063de215fd7ec"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb:70-95 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb:70-95 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb:70-95 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb:70-95 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 62 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0088a99f984ce13fe7b7a231b1e0819071a5594c75bfb40e11ca81fb092cd64"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 4): 2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb:113-130 | 2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb:113-130 | 2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb:113-130 | 2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb:113-130 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb\u0060 and \u00602016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa3bc416f8722602c8a75bc0b5e4001cd4112bfc7d92c04ba41f6cce922557a0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (104 lines \u00D7 4): 2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:230-333 | 2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:230-333 | 2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:230-333 | 2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:230-333 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb\u0060 and \u00602016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 373 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9a5b2955de2266122cb8ce050b7bc2c287af4df3068d280ef911bb3b0283af2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 8): 2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:544-555 | 2015/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb:152-163 | 2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:544-555 | 2016/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb:152-163 | 2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:544-555 | 2017/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb:152-163 | 2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:544-555 | 2018/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb:152-163 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb\u0060 and \u00602015/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 62 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"677b4ecd7341c3c9f8ec7de22d27475d0442731826cd53edd94a0460a4273240"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 8): 2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:646-652 | 2015/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb:254-260 | 2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:646-652 | 2016/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb:254-260 | 2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:646-652 | 2017/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb:254-260 | 2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb:646-652 | 2018/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb:254-260 \u2014 before extracting anything, compare \u00602015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb\u0060 and \u00602015/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 62 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":646}}}],"partialFingerprints":{"codehealthFindingId/v1":"e77cd3c79429fa1f5ac57c3fb8114b9222680f19e8562a59bb7319efa5ed4d40"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (62 lines \u00D7 4): 2015/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb:58-119 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb:58-119 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb:58-119 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb:58-119 \u2014 before extracting anything, compare \u00602015/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb\u0060 and \u00602016/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2c5add8b147b6423b1bee03357b8d451825af7adc15308a9e4b2ebd014ad0e4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): 2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb:98-104 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb:98-104 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb:98-104 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb:98-104 \u2014 before extracting anything, compare \u00602015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb\u0060 and \u00602016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 30 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"4931448bbfd241e06cc5fd3b64efacc015ebb96f9796192c90b1da62a1b00b23"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): 2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb:116-122 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb:116-122 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb:116-122 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb:116-122 \u2014 before extracting anything, compare \u00602015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb\u0060 and \u00602016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 30 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad26cf73b591a63915dacdbf9b047d3247ad25269774438a6232c54e49c569e8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): 2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:614-624 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:614-624 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:614-624 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb:614-624 \u2014 before extracting anything, compare \u00602015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb\u0060 and \u00602016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 209 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":614}}}],"partialFingerprints":{"codehealthFindingId/v1":"af357c7cc258acb172918dcb6e32f77d4038a6ba3ff53d72a2ff631ac915202c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): 2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:55-63 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:55-63 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:55-63 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:55-63 \u2014 before extracting anything, compare \u00602015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb\u0060 and \u00602016/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 323 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dddc3188ae6a19e4d39415d13c59e2426dfbfa98b9ba887b57455015b1c8ef0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 4): 2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:127-140 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:127-140 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:127-140 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:127-140 \u2014 before extracting anything, compare \u00602015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb\u0060 and \u00602016/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 323 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"f85719f3d268344abaf5abc53d19f404da6b3f79c45329fa207f55ae018b5c01"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): 2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:415-423 | 2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:415-423 | 2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:415-423 | 2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb:415-423 \u2014 before extracting anything, compare \u00602015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb\u0060 and \u00602016/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 323 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/MultiSelectTreeview.vb"},"region":{"startLine":415}}}],"partialFingerprints":{"codehealthFindingId/v1":"33d977ad43fa1f136d1ea8bba8fec1ec7e35c9bfcfa6f8aec86e0712d7ad913d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C1.vb:25-34 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C1.vb:25-34 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C1.vb:25-34 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C1.vb:25-34 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C1.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C1.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C1.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"5266ad6e237ff1ab56f7d1675b5146d0989570751db9a46446b24f1fcb1ea8b7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C2.vb:25-34 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C2.vb:25-34 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C2.vb:25-34 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C2.vb:25-34 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C2.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C2.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C2.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"821d6ef1b55b3d5f95d89b05c19cabacc982f4b59b073e8ab75d786bbff8be62"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C3.vb:25-34 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C3.vb:25-34 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C3.vb:25-34 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C3.vb:25-34 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C3.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C3.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C3.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"085d38595be423aaa90bbb951ea7679a871a5c6065df4497d6b4e15fdd39444f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C4.vb:25-34 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C4.vb:25-34 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C4.vb:25-34 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C4.vb:25-34 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C4.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C4.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C4.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"bffc2a55d130b2f11a576a79000dd9f67d2c60830e2a1095d7efac9738d57dcc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsParamMap.vb:28-38 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsParamMap.vb:28-38 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsParamMap.vb:28-38 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsParamMap.vb:28-38 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsParamMap.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsParamMap.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsParamMap.vb"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ceae15ccf1243483cc5b0de24350e431af25ab099f4b2bc63ba2a10b76818be"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb:164-172 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb:164-172 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb:164-172 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb:164-172 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 115 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"a263d3791af2f0b0c96b205327fb2c077fd05f8c92792c6d4289fd0f5c60acd2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:111-129 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:111-129 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:111-129 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:111-129 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 221 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"39637b6ab27aa24b4bb022692eb2c86c6bd2a5cf7f9c1be2bdfea6893b8ad336"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:454-470 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:454-470 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:454-470 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb:454-470 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 221 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":454}}}],"partialFingerprints":{"codehealthFindingId/v1":"e47c2c7aa60d3de46637f1e0e320ef075312fcc706ebb52ec5826e561317af27"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb:32-48 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb:32-48 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb:32-48 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb:32-48 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 100 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFile.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"768b1de3b309ce7dc65ba2b76995fdd60a9977eb7cb2f3c010c71f2ea8c2cc42"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:19-29 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:19-29 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 267 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4b6795b805d1c1b7c745cbd3659049a4ab245c97cc64cc12d7c50f6c407f498"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:440-444 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:440-444 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 267 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":440}}}],"partialFingerprints":{"codehealthFindingId/v1":"35909e9e595b652643b54c79278b5569e1ff38a92c3958ecc36b438969fbb9b8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:454-458 | 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:468-472 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:454-458 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:468-472 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 267 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":454}}}],"partialFingerprints":{"codehealthFindingId/v1":"b65cb8c29366d6f45f74e9747365d6f82a5761094815b77b0686812dfcff2b02"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 12): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:494-502 | 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:578-586 | 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:513-521 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:494-502 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:578-586 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:513-521 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:494-502 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:578-586 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:513-521 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:494-502 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:577-585 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:513-521 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 267 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":494}}}],"partialFingerprints":{"codehealthFindingId/v1":"15c8b6ade756bfc4f45ffa5c7d31c821c2a81effc8a4c997ad43aac7d10fad1c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:30-39 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:30-39 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:30-39 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:30-39 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 169 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"421f676593c258a3fa54b1ea540fe80a57dea0f25a1bb158b651bd9a0259a986"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:251-258 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:251-258 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:251-258 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb:251-258 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 169 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"9554bbc407f137efcfd86ac58e725ce4bc5b3af22b98587c116bdcdb828cc8eb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:303-321 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:303-321 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 149 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":303}}}],"partialFingerprints":{"codehealthFindingId/v1":"f52c28c9c5385ac2110837eb8085300ebf65a506eb5e7aab1b57e66ad5c56dad"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C5.vb:25-34 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C5.vb:25-34 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C5.vb:25-34 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C5.vb:25-34 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C5.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C5.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/Entry/E33AB788BB594985A6A437CEFC70F7C5.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"38bb262d1d49b9be80489dccfb2754a9cd90053e71897acb7ff00c3695fe4167"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): 2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:110-116 | 2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:110-116 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:110-116 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb:110-116 \u2014 before extracting anything, compare \u00602015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb\u0060 and \u00602016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 317 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c45a48ab9c4fa4e4e081a02a14ab275f0cdc899cdd8e517fb9fcd72c220326d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): 2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:32-42 | 2016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:32-42 | 2017/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:33-43 | 2018/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:33-43 \u2014 before extracting anything, compare \u00602015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb\u0060 and \u00602016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 260 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"75697980352185d90c3c14d3987a5e87ddecc495d78eb1b682d26a0d589ace3f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): 2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:59-69 | 2016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:59-69 | 2017/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:60-70 | 2018/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:60-70 \u2014 before extracting anything, compare \u00602015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb\u0060 and \u00602016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 260 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"20cfefbc51c5aaca821d61ae902cacc13b7f575edd6c2a79b43caa530da08c9e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): 2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:426-434 | 2016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:426-434 | 2017/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:427-435 | 2018/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb:427-435 \u2014 before extracting anything, compare \u00602015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb\u0060 and \u00602016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 260 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":426}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d4bccf7329e964372fad1d3fc650170e72cbab9321dd51f19dfcf68e90ef682"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 4): 2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb:240-255 | 2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb:240-255 | 2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb:240-255 | 2018/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb:240-255 \u2014 before extracting anything, compare \u00602015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb\u0060 and \u00602016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 131 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8848b591fd9756f02ea71d322082a969561e80d2affbae008f75f674471dd9d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): 2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb:178-189 | 2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb:178-189 | 2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb:178-189 | 2018/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb:178-189 \u2014 before extracting anything, compare \u00602015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb\u0060 and \u00602016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 137 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"b26528fb4780e46cb91479810f603761c60fbfaf232e54445d66a43d53f191da"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 4): 2015/Case.Directionality/Case.Directionality/UI/form_Main.vb:19-32 | 2016/Case.Directionality/Case.Directionality/UI/form_Main.vb:19-32 | 2017/Case.Directionality/Case.Directionality/UI/form_Main.vb:19-32 | 2018/Case.Directionality/Case.Directionality/UI/form_Main.vb:19-32 \u2014 before extracting anything, compare \u00602015/Case.Directionality/Case.Directionality/UI/form_Main.vb\u0060 and \u00602016/Case.Directionality/Case.Directionality/UI/form_Main.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/UI/form_Main.vb"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ccbb823f5df977da922f82383442da01debca2c48973a07f6f82e1953377f29"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 4): 2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb:216-235 | 2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb:216-235 | 2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb:216-235 | 2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb:216-235 \u2014 before extracting anything, compare \u00602015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb\u0060 and \u00602016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 70 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2fde3a88b215dda7a30e10b8d31590783dfe8907d7afd18dc8b4ac35c03d640"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): 2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:45-55 | 2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:45-55 | 2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:45-55 | 2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:45-55 \u2014 before extracting anything, compare \u00602015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb\u0060 and \u00602016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 215 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"8979ccd8fd6faee4d51d163267827dd537ccb118537972fd8549b508ba7617e4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (84 lines \u00D7 4): 2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:278-361 | 2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:278-361 | 2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:278-361 | 2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb:278-361 \u2014 before extracting anything, compare \u00602015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb\u0060 and \u00602016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 215 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"7985027f8fb907402b45f9a7002b6c5f7ee1f5c77d2eceec40535fa51aa5ffb0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): 2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb:37-43 | 2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb:37-43 | 2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb:37-43 | 2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb:37-43 \u2014 before extracting anything, compare \u00602015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb\u0060 and \u00602016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1a99390fe3acf8f70aa35e1518d0484774050c5b080be5a0968441ef971c2be"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): 2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb:93-102 | 2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb:93-102 | 2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb:93-102 | 2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb:93-102 \u2014 before extracting anything, compare \u00602015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb\u0060 and \u00602016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 52 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"32ade21ec19fb7088e137f9cb8220dc0b542227d460d1ee731d294f1ade7629d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): 2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb:121-130 | 2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb:121-130 | 2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb:121-130 | 2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb:121-130 \u2014 before extracting anything, compare \u00602015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb\u0060 and \u00602016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 52 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e46b43b79ea855c35acdbe581a9c3047d147065b854336feb190e8e28ed645c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): 2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb:37-44 | 2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb:37-44 | 2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb:37-44 | 2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb:37-44 \u2014 before extracting anything, compare \u00602015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb\u0060 and \u00602016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 130 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff58f84090694f2790a557424c3b8b30486306ec6425ea1394e7c8b500a31813"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): 2015/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb:45-55 | 2016/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb:45-55 | 2017/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb:45-55 | 2018/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb:45-55 \u2014 before extracting anything, compare \u00602015/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb\u0060 and \u00602016/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 155 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c6459f961ef7f93bcc2960f173f33c9016297f1e94277980455e121b271f150"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 3): 2015/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb:232-257 | 2016/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb:232-257 | 2017/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb:232-257 \u2014 before extracting anything, compare \u00602015/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb\u0060 and \u00602016/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 155 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"3be725b02826e17991b739c4f34bf79bfb75687ecc1334da6fb21fef80142e7c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 4): 2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:147-169 | 2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:147-169 | 2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:147-169 | 2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb:147-169 \u2014 before extracting anything, compare \u00602015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb\u0060 and \u00602016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 260 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb6172703b33dea753b0790a006195c5a853551debc0f5b824e049f3360659d0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): 2015/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:16-20 | 2016/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:16-20 | 2017/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:16-20 | 2018/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:16-20 \u2014 before extracting anything, compare \u00602015/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb\u0060 and \u00602016/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 150 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"44b957845207e1c6cdedea2870b4a3ac7a66788e40041a688901f7542fa40457"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): 2015/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:164-172 | 2016/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:164-172 | 2017/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:164-172 | 2018/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:164-172 \u2014 before extracting anything, compare \u00602015/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb\u0060 and \u00602016/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 150 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"edf1059e22005023b54c15c83731465e2e0ba38d9f3bf9a0c27682087a1f3ae7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): 2015/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:210-220 | 2016/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:210-220 | 2017/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:210-220 | 2018/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:210-220 \u2014 before extracting anything, compare \u00602015/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb\u0060 and \u00602016/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 150 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"405428d7e43cdce1870a14ae4518f90b82d2978a576527542402760c2885ecb3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): 2015/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:231-242 | 2016/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:231-242 | 2017/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:231-242 | 2018/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb:231-242 \u2014 before extracting anything, compare \u00602015/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb\u0060 and \u00602016/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 150 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/UnitConversion.vb"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"f71a7f67e9bc93514ec9a68abba56c5f26d9340171c9d67087f50fe14f04b23c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 4): 2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:35-47 | 2016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:35-47 | 2017/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:35-47 | 2018/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:35-47 \u2014 before extracting anything, compare \u00602015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb\u0060 and \u00602016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 191 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"18c20de3476a0bc66eb86f93d5423176e3d8b34f5c66bae6600b65ebb7920917"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): 2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:390-398 | 2016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:390-398 | 2017/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:390-398 | 2018/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb:390-398 \u2014 before extracting anything, compare \u00602015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb\u0060 and \u00602016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 191 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":390}}}],"partialFingerprints":{"codehealthFindingId/v1":"99f19bb8d08f08ed6f480e5c4139d098573b618f2de0b6f9d6aa61b46180cfee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 4): 2015/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb:95-118 | 2016/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb:95-118 | 2017/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb:95-118 | 2018/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb:95-118 \u2014 before extracting anything, compare \u00602015/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb\u0060 and \u00602016/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 126 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"77a14e3208a866d968da5846bd67a861037b1bd839d185dacb0d64453248c7b2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): 2015/Case.LineChanger/Case.LineChanger/Forms/form_Main.vb:93-101 | 2016/Case.LineChanger/Case.LineChanger/Forms/form_Main.vb:93-101 | 2017/Case.LineChanger/Case.LineChanger/Forms/form_Main.vb:93-101 \u2014 before extracting anything, compare \u00602015/Case.LineChanger/Case.LineChanger/Forms/form_Main.vb\u0060 and \u00602016/Case.LineChanger/Case.LineChanger/Forms/form_Main.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LineChanger/Case.LineChanger/Forms/form_Main.vb"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cb0d342c3469b91bb443610986de3b219c6837867b061548dbd4adff21bac9f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): 2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb:22-31 | 2016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb:22-31 | 2017/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb:22-31 | 2018/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb:22-31 \u2014 before extracting anything, compare \u00602015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb\u0060 and \u00602016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 106 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"d833c84aef65ed5587802eb3c9f2caacaf2961a6e2d1ce2a8150d00b8f6d9d67"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): 2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb:43-52 | 2016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb:43-52 | 2017/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb:43-52 | 2018/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb:43-52 \u2014 before extracting anything, compare \u00602015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb\u0060 and \u00602016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 106 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0ed0f736ddb70477f3e4de07293cb8471ea02a0ac7cc5606e3478a8dfcaab09"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): 2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb:64-73 | 2016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb:64-73 | 2017/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb:64-73 | 2018/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb:64-73 \u2014 before extracting anything, compare \u00602015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb\u0060 and \u00602016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 106 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bd054cea3a125919dabedb70f56a21716a95c920fa0e241177591832c446ba5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 4): 2015/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb:33-56 | 2016/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb:33-56 | 2017/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb:33-56 | 2018/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb:33-56 \u2014 before extracting anything, compare \u00602015/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb\u0060 and \u00602016/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 122 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"14d3a878bdced1ae89394b57c425a687d88548814413d4753eae6859c4d1484f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 4): 2015/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb:74-87 | 2016/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb:74-87 | 2017/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb:74-87 | 2018/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb:74-87 \u2014 before extracting anything, compare \u00602015/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb\u0060 and \u00602016/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 122 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9a30db0f65bd1d8f00b18a94dc1b60a84e0e58a03d1f325b3ccf5c95b34ac05"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 4): 2015/Case.RevClouds/Case.RevClouds/Data/clsSettings.vb:36-49 | 2016/Case.RevClouds/Case.RevClouds/Data/clsSettings.vb:36-49 | 2017/Case.RevClouds/Case.RevClouds/Data/clsSettings.vb:36-49 | 2018/Case.RevClouds/Case.RevClouds/Data/clsSettings.vb:36-49 \u2014 before extracting anything, compare \u00602015/Case.RevClouds/Case.RevClouds/Data/clsSettings.vb\u0060 and \u00602016/Case.RevClouds/Case.RevClouds/Data/clsSettings.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RevClouds/Case.RevClouds/Data/clsSettings.vb"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"355788c580e655ae301a819c9fb87b105e86b6cfa8f6e65845ff98a5de9966ea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 4): 2015/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb:53-69 | 2016/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb:53-69 | 2017/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb:53-69 | 2018/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb:53-69 \u2014 before extracting anything, compare \u00602015/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb\u0060 and \u00602016/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7b945109d8de8145b0d236a801310cd153b1ce44520c5a5621a65b02affcdf9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): 2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:351-360 | 2016/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:351-360 \u2014 before extracting anything, compare \u00602015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb\u0060 and \u00602016/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 173 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":351}}}],"partialFingerprints":{"codehealthFindingId/v1":"26c75f9e377ca12d3b288aedc2274ba201f776357411e735ce47ea5af434e55f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): 2015/Case.ViewportReporting/Case.ViewportReporting/Data/clsSettings.vb:63-71 | 2016/Case.ViewportReporting/Case.ViewportReporting/Data/clsSettings.vb:63-71 | 2017/Case.ViewportReporting/Case.ViewportReporting/Data/clsSettings.vb:63-71 | 2018/Case.ViewportReporting/Case.ViewportReporting/Data/clsSettings.vb:63-71 \u2014 before extracting anything, compare \u00602015/Case.ViewportReporting/Case.ViewportReporting/Data/clsSettings.vb\u0060 and \u00602016/Case.ViewportReporting/Case.ViewportReporting/Data/clsSettings.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewportReporting/Case.ViewportReporting/Data/clsSettings.vb"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"270671554878343e4840a7371e8b9671179f534a859aed0d2c73522c45d10a73"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): 2015/Case.ViewCreator/Case.ViewCreator/Classes/clsParameterData.cs:16-24 | 2016/Case.ViewCreator/Case.ViewCreator/Classes/clsParameterData.cs:16-24 | 2017/Case.ViewCreator/Case.ViewCreator/Classes/clsParameterData.cs:16-24 | 2018/Case.ViewCreator/Case.ViewCreator/Classes/clsParameterData.cs:16-24 \u2014 before extracting anything, compare \u00602015/Case.ViewCreator/Case.ViewCreator/Classes/clsParameterData.cs\u0060 and \u00602016/Case.ViewCreator/Case.ViewCreator/Classes/clsParameterData.cs\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Classes/clsParameterData.cs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"41b011e7cec049fa042ad1dcb4282a1bfd88f97f4ea51b96e6716e971c42f1e2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): 2015/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs:72-82 | 2016/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs:72-82 | 2017/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs:72-82 | 2018/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs:72-82 \u2014 before extracting anything, compare \u00602015/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs\u0060 and \u00602016/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 98 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"41ae596d78ad03fead91d9c3a564c96f365a4acfe9aab2342f0addbea855fe35"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 4): 2015/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs:90-109 | 2016/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs:90-109 | 2017/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs:90-109 | 2018/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs:90-109 \u2014 before extracting anything, compare \u00602015/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs\u0060 and \u00602016/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 98 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ffc30c1b7fe0a3507b524c9af70476715910dad01d48a19498e40cce940bc1b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): 2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:192-202 | 2016/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:192-202 | 2017/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:192-202 | 2018/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs:188-198 \u2014 before extracting anything, compare \u00602015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs\u0060 and \u00602016/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 264 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"72969c90ce0c287110b62e04ca22dc9dbf9f97ac6c1a8ab8beea6c9bb2097a81"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): 2015/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb:42-51 | 2016/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb:42-51 | 2017/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb:42-51 | 2018/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb:42-51 \u2014 before extracting anything, compare \u00602015/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb\u0060 and \u00602016/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 72 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"386e9bea8438a14b6024f3877df54124a9a6bb14fc796cfb8480b2ec7d6703a7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:46-53 | 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:46-53 | 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:46-53 | 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs:46-53 \u2014 before extracting anything, compare \u00602015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 and \u00602016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs\u0060 as WHOLE FILES: this scan already matched 17 separate duplicated blocks between them, totalling at least 421 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f00180096760e201d8a7287fd339768fed4eb4732f96dfe065674a1f1b35166"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): 2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnData.cs:38-42 | 2016/Case.ObjectStyles/Case.ObjectStyles/Data/mnData.cs:38-42 | 2017/Case.ObjectStyles/Case.ObjectStyles/Data/mnData.cs:38-42 | 2018/Case.ObjectStyles/Case.ObjectStyles/Data/mnData.cs:38-42 \u2014 before extracting anything, compare \u00602015/Case.ObjectStyles/Case.ObjectStyles/Data/mnData.cs\u0060 and \u00602016/Case.ObjectStyles/Case.ObjectStyles/Data/mnData.cs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 31 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. 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":"2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnData.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f69185cf156c6bf45b5fd69ef4e12e278bb17bac3ecccf865ab09bbe508bad0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): 2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnData.cs:85-94 | 2016/Case.ObjectStyles/Case.ObjectStyles/Data/mnData.cs:85-94 | 2017/Case.ObjectStyles/Case.ObjectStyles/Data/mnData.cs:85-94 | 2018/Case.ObjectStyles/Case.ObjectStyles/Data/mnData.cs:85-94 \u2014 before extracting anything, compare \u00602015/Case.ObjectStyles/Case.ObjectStyles/Data/mnData.cs\u0060 and \u00602016/Case.ObjectStyles/Case.ObjectStyles/Data/mnData.cs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 31 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnData.cs"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1956df3b088561428806eb85e6630de0d128a9b4432d114a0bed8f4742c5895"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): 2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs:58-67 | 2016/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs:58-67 | 2017/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs:58-67 | 2018/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs:58-67 \u2014 before extracting anything, compare \u00602015/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs\u0060 and \u00602016/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 61 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"4938578c36a62eece5aac8da7e2a484dcbde30fdba1f771accc499e2fbf34920"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 4): 2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs:78-90 | 2016/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs:78-90 | 2017/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs:78-90 | 2018/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs:78-90 \u2014 before extracting anything, compare \u00602015/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs\u0060 and \u00602016/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 61 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ece8d6275ed8108d16820565f093c51d76b39dc491ed82a2bde7386ef68699c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): 2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:32-41 | 2016/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:32-41 | 2017/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:32-41 | 2018/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs:32-41 \u2014 before extracting anything, compare \u00602015/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs\u0060 and \u00602016/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 106 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6c1bbbf243ce639b61e04883cab321c381ead31ea461facdce9bdffb1c80ad6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): 2015/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs:53-62 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs:53-62 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs:53-62 | 2018/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs:53-62 \u2014 before extracting anything, compare \u00602015/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs\u0060 and \u00602016/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 61 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d51cab19af6ce9388666a91d1fde4b4752d160039292188830b0f073a122ca3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 4): 2015/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs:73-85 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs:73-85 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs:73-85 | 2018/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs:73-85 \u2014 before extracting anything, compare \u00602015/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs\u0060 and \u00602016/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 61 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d728cf5ec29874e2ce846feb90ae4d884ff12633427fc3d6d9aaca6d5b63aa1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): 2015/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnSettings.cs:28-37 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnSettings.cs:28-37 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnSettings.cs:28-37 | 2018/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnSettings.cs:28-37 \u2014 before extracting anything, compare \u00602015/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnSettings.cs\u0060 and \u00602016/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnSettings.cs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 40 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnSettings.cs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d3e11235c6a3a30eb6bb65fe697709964a56f5daaa42c3607069dc978a2d893"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): 2015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:99-103 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:99-103 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:99-103 | 2018/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:99-103 \u2014 before extracting anything, compare \u00602015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs\u0060 and \u00602016/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 147 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. 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":"2015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"659b25567f335ca638ae8c51d4325f1055e45799a2eaee7be66fa047a49888c5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): 2015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:274-278 | 2016/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:274-278 | 2017/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:274-278 | 2018/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs:274-278 \u2014 before extracting anything, compare \u00602015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs\u0060 and \u00602016/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 147 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. 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":"2015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee95f0621c2544e709c2a09232b90500c832b309767aa2e1c37f439b66cd3349"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 4): 2015/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb:51-66 | 2016/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb:51-66 | 2017/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb:51-66 | 2018/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb:51-66 \u2014 before extracting anything, compare \u00602015/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb\u0060 and \u00602016/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 106 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"b729e38b8024e5c01542438e7c52bcf1bebba61241829e366e891d4fc5950269"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 4): 2015/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb:80-95 | 2016/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb:80-95 | 2017/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb:80-95 | 2018/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb:80-95 \u2014 before extracting anything, compare \u00602015/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb\u0060 and \u00602016/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 106 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"c639ea416d31d339ae0d0966b31aee23704b178c6dccb7bd696c829254f6ff5a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 4): 2015/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb:109-124 | 2016/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb:109-124 | 2017/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb:109-124 | 2018/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb:109-124 \u2014 before extracting anything, compare \u00602015/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb\u0060 and \u00602016/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 106 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9121034c70145711e850d993557685f9ebf30c002c098f552c2e03747b55250"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 4): 2015/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb:192-208 | 2016/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb:192-208 | 2017/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb:192-208 | 2018/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb:192-208 \u2014 before extracting anything, compare \u00602015/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb\u0060 and \u00602016/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 106 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"b44bbecb008cf021f87779063a36ae574ffb9cf81166fbbd29af4ee1c34eb33c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 4): 2015/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb:296-315 | 2016/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb:296-315 | 2017/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb:296-315 | 2018/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb:296-315 \u2014 before extracting anything, compare \u00602015/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb\u0060 and \u00602016/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 242 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec3784121a70ed37163e864324fc8558b621a924122052e07d214af09c93a654"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): 2015/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs:155-161 | 2016/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs:155-161 | 2017/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs:155-161 | 2018/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs:150-156 \u2014 before extracting anything, compare \u00602015/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs\u0060 and \u00602016/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 55 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f4a340fa68460adb66236605f98ecf2868a60fc36599f7d06d1a2cee897d93d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): 2015/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs:177-181 | 2016/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs:177-181 | 2017/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs:177-181 | 2018/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs:172-176 \u2014 before extracting anything, compare \u00602015/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs\u0060 and \u00602016/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 55 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5a2ad571874c1b9bd59739b402ae1058d69e72d58796577710970d5c329a791"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 4): 2015/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallTransform.cs:65-79 | 2016/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallTransform.cs:65-79 | 2017/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallTransform.cs:65-79 | 2018/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallTransform.cs:60-74 \u2014 before extracting anything, compare \u00602015/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallTransform.cs\u0060 and \u00602016/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallTransform.cs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 56 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallTransform.cs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"87729b8e62af53607e76b3d17068e2cac85db5369c45aceb29e2b0c7437ef149"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): 2015/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallTransform.cs:166-172 | 2016/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallTransform.cs:166-172 | 2017/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallTransform.cs:166-172 | 2018/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallTransform.cs:161-167 \u2014 before extracting anything, compare \u00602015/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallTransform.cs\u0060 and \u00602016/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallTransform.cs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 56 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ParallelWalls/Case.ParallelWalls/Data/clsWallTransform.cs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d958202e3808ff1c1f513b8822873062ebfff967f5adbf6fa4411699fe2acf3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 3): Case.AppsRibbon.2017/Entry/AppMain.vb:326-343 | Case.AppsRibbon.2018/Entry/AppMain.vb:326-343 | Case.AppsRibbon/Entry/AppMain.vb:326-343 \u2014 before extracting anything, compare \u0060Case.AppsRibbon.2017/Entry/AppMain.vb\u0060 and \u0060Case.AppsRibbon.2018/Entry/AppMain.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 148 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2017/Entry/AppMain.vb"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfe548ab2028d20bd536ef9dfcbb1baddeeabcd184d1f4bb0b8649b1c04e40e8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): Case.AppsRibbon.2017/Utility/modUtility.vb:13-22 | Case.AppsRibbon.2018/Utility/modUtility.vb:13-22 | Case.AppsRibbon/Utility/modUtility.vb:13-22 \u2014 before extracting anything, compare \u0060Case.AppsRibbon.2017/Utility/modUtility.vb\u0060 and \u0060Case.AppsRibbon.2018/Utility/modUtility.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2017/Utility/modUtility.vb"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"7135e841761997c5035249024a5e824a24153e3a9aa6f1a2ce902a20a7ba9c7f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): 2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:32-41 | 2016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:32-41 | 2017/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:32-41 | 2018/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:32-41 \u2014 before extracting anything, compare \u00602015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs\u0060 and \u00602016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 115 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"eeff5acf9e29d5b6b6df0ee16500a78d66383d84d3170b83033930d5b8742679"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): 2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:52-58 | 2016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:52-58 | 2017/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:52-58 | 2018/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:52-58 \u2014 before extracting anything, compare \u00602015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs\u0060 and \u00602016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 115 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6f4d8b44ae63299004d347cc02fb651683da9ffeadbc37709e09352c7b0d0fa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): 2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:69-75 | 2016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:69-75 | 2017/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:69-75 | 2018/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:69-75 \u2014 before extracting anything, compare \u00602015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs\u0060 and \u00602016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 115 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"af1749b78bd7b4db478ded0304e72655fb52a6edba1c3be009fb2eef0fb2fad8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): 2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:83-87 | 2016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:83-87 | 2017/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:83-87 | 2018/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:83-87 \u2014 before extracting anything, compare \u00602015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs\u0060 and \u00602016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 115 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"4064046cf56050881cfa6ca3b4ce9f250d8b6f0a97f74af33f51c25274be2b73"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): 2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:117-124 | 2016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:117-124 | 2017/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:117-124 | 2018/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:117-124 \u2014 before extracting anything, compare \u00602015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs\u0060 and \u00602016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 115 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b4c21b676361e188953e9a6f6e55fed53ca4b9032747b88fec147c2dda3222f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): 2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:224-235 | 2016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:224-235 | 2017/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:224-235 | 2018/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:224-235 \u2014 before extracting anything, compare \u00602015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs\u0060 and \u00602016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 115 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"37a22694e34c644bad2652f50c9f9dd6b4aa1f6cc52cfcacf497044b7a0d2e87"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): 2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:276-283 | 2016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:276-283 | 2017/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:276-283 | 2018/Case.Subs.KeyMatcher/Utility/clsGlobals.cs:276-283 \u2014 before extracting anything, compare \u00602015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs\u0060 and \u00602016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 115 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ddd9bf1b65ba01de4c9404372f139f623efd464e886b0fb8c3be470a16e3302"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): 2015/Case.DimensionOverrides/Case.DimensionOverrides/Data/clsSettings.cs:93-99 | 2016/Case.DimensionOverrides/Case.DimensionOverrides/Data/clsSettings.cs:93-99 | 2017/Case.DimensionOverrides/Case.DimensionOverrides/Data/clsSettings.cs:93-99 | 2018/Case.DimensionOverrides/Case.DimensionOverrides/Data/clsSettings.cs:88-94 \u2014 before extracting anything, compare \u00602015/Case.DimensionOverrides/Case.DimensionOverrides/Data/clsSettings.cs\u0060 and \u00602016/Case.DimensionOverrides/Case.DimensionOverrides/Data/clsSettings.cs\u0060 as WHOLE FILES: 98% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 2 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DimensionOverrides/Case.DimensionOverrides/Data/clsSettings.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"5820a410805f09a9c04a1ed2ce0b294cf6422320b542f37fb2a545d81b67f954"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): 2015/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs:27-35 | 2016/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs:27-35 | 2017/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs:27-35 | 2018/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs:22-30 \u2014 before extracting anything, compare \u00602015/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs\u0060 and \u00602016/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 123 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"51130f30ee98685ad4e9a8dbcdcc21c22524b3ca9bf06e15edd3112408120711"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 4): 2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsSettings.vb:35-50 | 2016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsSettings.vb:35-50 | 2017/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsSettings.vb:35-50 | 2018/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsSettings.vb:35-50 \u2014 before extracting anything, compare \u00602015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsSettings.vb\u0060 and \u00602016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 35 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsSettings.vb"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0ee6d67e0ea29eaaeb861c230e6c6a4a5e7cee490c420520d91496818de2814"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): 2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsSettings.vb:120-126 | 2016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsSettings.vb:120-126 | 2017/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsSettings.vb:120-126 | 2018/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsSettings.vb:120-126 \u2014 before extracting anything, compare \u00602015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsSettings.vb\u0060 and \u00602016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsSettings.vb\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 35 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsSettings.vb"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"26188b7a06a666c1eace4324fea7340c06de8f00cd9cee4765a3a0f60eabd316"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): 2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Events/clsDocs.vb:21-30 | 2016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Events/clsDocs.vb:21-30 | 2017/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Events/clsDocs.vb:21-30 | 2018/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Events/clsDocs.vb:21-30 \u2014 before extracting anything, compare \u00602015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Events/clsDocs.vb\u0060 and \u00602016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Events/clsDocs.vb\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Events/clsDocs.vb"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"103f5a26e49c1cb83347579d22e5371e1b195d075b68a360e33b7b5af91b5c25"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 4): 2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:75-92 | 2016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:75-92 | 2017/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:75-92 | 2018/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:75-92 \u2014 before extracting anything, compare \u00602015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb\u0060 and \u00602016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 93 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b642b83a912cf783e519eb2f272310e13d585402e28c5e002349a0c9d247c71"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): 2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:124-132 | 2016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:124-132 | 2017/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:124-132 | 2018/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb:124-132 \u2014 before extracting anything, compare \u00602015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb\u0060 and \u00602016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 93 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2b9909d2c24eaedff80a963feb3a4340a4eaa6d8e6604f28511d102e36c5803"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): 2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:27-37 | 2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb:27-37 \u2014 before extracting anything, compare \u00602017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb\u0060 and \u00602018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 299 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS/UI/form_ImportMain.xaml.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"238ae1e199290eeaae654f25a3f59ee978337d3634459599c3b2764c12052b34"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): 2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:418-427 | 2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb:418-427 \u2014 before extracting anything, compare \u00602017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb\u0060 and \u00602018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 201 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":418}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b7d9937544919b989e906c3f2651e98924aba90bc106a125ebe0785056f1e94"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:19-29 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:19-29 \u2014 before extracting anything, compare \u00602017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 and \u00602018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 267 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3c3019492ae80390702009480220d6cfbcaad95c0a772dedf4f0c8886ddee9b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:440-444 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:440-444 \u2014 before extracting anything, compare \u00602017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 and \u00602018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 267 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":440}}}],"partialFingerprints":{"codehealthFindingId/v1":"38082657de6f08f8385cb2b4a11139c330fb3883967cbba762add5b14768ec3e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:454-458 | 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:468-472 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:454-458 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb:468-472 \u2014 before extracting anything, compare \u00602017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 and \u00602018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 267 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":454}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6465a3f8f23365ca9d442994060b6993e18346b1761a677a75fe70ef2199a81"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): 2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:303-321 | 2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb:303-321 \u2014 before extracting anything, compare \u00602017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb\u0060 and \u00602018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 149 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":303}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f7b6f8521ed4768e1f6e9a520add99321110a27449a0626a83712fab60059d0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): 2017/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:351-360 | 2018/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb:346-355 \u2014 before extracting anything, compare \u00602017/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb\u0060 and \u00602018/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 173 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":351}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff4ea9eecd4a87324be887e49d29c01db8df8a8e2d25948b6e1c2bc916835baf"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: form_DataManager (LCOM4 5): form_DataManager\u0027s methods fall into 5 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 5 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"24be567becac8c2e9baba7821a5912bf9b3eeaa460cef26d4a0851d28c97e469"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: clsAutomationTest (LCOM4 5): clsAutomationTest\u0027s methods fall into 5 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 5 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":4}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcb8220a882938215cb5cf8fac112baee05fda06909aff79ee1604370d4dafc4"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: form_DataManager (LCOM4 5): form_DataManager\u0027s methods fall into 5 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 5 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d3ac79444325f54b5667321345e1a1d25f20b776ba6a9f5d88707df3d1a4c19"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: form_DataManager (LCOM4 5): form_DataManager\u0027s methods fall into 5 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 5 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"81746159ffe9ac818f1a1cc702b7b3206922ac1c883bd81ba8519d1716861e1b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: form_DataManager (LCOM4 5): form_DataManager\u0027s methods fall into 5 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 5 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"812daed92d0c1c7f69ba5cf519155e8c74df85f68928e8f7b7f9c7e9ab48443e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: clsAutomationTest (LCOM4 5): clsAutomationTest\u0027s methods fall into 5 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 5 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":4}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f85304bbc45d670e8639c4bd51a48d755bbc92b95567abb7bed38b270762d17"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: clsAutomationTest (LCOM4 5): clsAutomationTest\u0027s methods fall into 5 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 5 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":4}}}],"partialFingerprints":{"codehealthFindingId/v1":"c66a09889135b071763aa5e46e0917d482defbb0612d5810b2861f12b395e458"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: clsAutomationTest (LCOM4 5): clsAutomationTest\u0027s methods fall into 5 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 5 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":4}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b37160824ffcc59973351e9b9a09ccfb881afb69708d2364fb9a2a6bf9c4525"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: form_PlacePoint (LCOM4 4): form_PlacePoint\u0027s methods fall into 4 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 4 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb"},"region":{"startLine":4}}}],"partialFingerprints":{"codehealthFindingId/v1":"95f10e7d3bf0798fa463919d864e6991852dcfd011815fd3d465158dceaad83f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: form_PlacePointsFromFile (LCOM4 4): form_PlacePointsFromFile\u0027s methods fall into 4 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 4 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"4861fb1934169750b97e5f21e990a26ff368b1ac05ee65cb3fb51f64770c0403"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: form_ExportPoints (LCOM4 4): form_ExportPoints\u0027s methods fall into 4 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 4 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":4}}}],"partialFingerprints":{"codehealthFindingId/v1":"d50f9a201682735836f1e45ac81a77d9bb95bad20f38e456a9a090a4d78bfa66"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: form_PlacePoint (LCOM4 4): form_PlacePoint\u0027s methods fall into 4 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 4 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb"},"region":{"startLine":4}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb44de8327caa597181e0c54700197b2952542929e9c9c2b0f9b9b6a19c7d3c3"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: form_PlacePointsFromFile (LCOM4 4): form_PlacePointsFromFile\u0027s methods fall into 4 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 4 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"b96492189523cc1f03a21bd639a16c34806f41de1fdee2383e795b8da6433459"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: form_ExportPoints (LCOM4 4): form_ExportPoints\u0027s methods fall into 4 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 4 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":4}}}],"partialFingerprints":{"codehealthFindingId/v1":"02c728f3bf2ad70402f628e110903be7ece2cd93276f603a3316f74e43db7a78"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: form_PlacePoint (LCOM4 4): form_PlacePoint\u0027s methods fall into 4 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 4 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb"},"region":{"startLine":4}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b5c2fbca8ec81ee3218a1f103a4ba08fe9a12717503f47beed4f29066557220"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: form_PlacePointsFromFile (LCOM4 4): form_PlacePointsFromFile\u0027s methods fall into 4 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 4 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"2006b6e8a233a8c1938fbb8d4493ab09912cc625c16a6e0fe4829f57dc5ebf63"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: form_ExportPoints (LCOM4 4): form_ExportPoints\u0027s methods fall into 4 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 4 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":4}}}],"partialFingerprints":{"codehealthFindingId/v1":"6681d71572c5b274dde12c86ce137aebd91b05947cd39da1beffc9db6274f004"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: form_PlacePoint (LCOM4 4): form_PlacePoint\u0027s methods fall into 4 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 4 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb"},"region":{"startLine":4}}}],"partialFingerprints":{"codehealthFindingId/v1":"245da71457c8c2251db25d16589e92c32f969c7b2daae55a879ef9bfaa0e29a8"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: form_PlacePointsFromFile (LCOM4 4): form_PlacePointsFromFile\u0027s methods fall into 4 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 4 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"585c5a87b6c0090c02ec7aad6ed3b6f3734cf20a9311975dae9bb8e06226a27a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: form_ExportPoints (LCOM4 4): form_ExportPoints\u0027s methods fall into 4 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 4 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":4}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1752c1f08575df00d13ad08d3eb481d35648bbf16298aa6848a7a49f63bac24"}},{"ruleId":"D8","level":"warning","message":{"text":"Coverage not measured \u2014 no coverage collector is wired up: Coverage NOT MEASURED: \u0060--collect:\u0022XPlat Code Coverage\u0022\u0060 names a data collector that ships in the \u0060coverlet.collector\u0060 package, and this repository wires up none \u2014 no test project references it and no runsettings declares one. The absence of coverage here is therefore not evidence about the suite or about our analyzer environment: without a collector, \u0060--collect\u0060 produces nothing even from a suite that builds and passes. Add a \u0060coverlet.collector\u0060 PackageReference to the test project(s) (or commit the Cobertura/OpenCover/lcov report your CI produces) and real coverage will be measured. It is excluded from the score rather than counted as a near-zero defect."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"62e63e619c28f057e129f2997c965d32a457366a9ce18ca019ffb6bdfba85c99"}},{"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":"e66850cf93d107fc0e90a4e3dc90913d34166695ddc8e26848ea97d953290281"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"bf8f13527921c4c638eba7093d405bba496ddccc9d0c7fb71375d5302f95e4e3"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"8c2b15c7229d04bc4aaf7ff5a38b6a4bede00c76b57ad1555eed1f3313346e50"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"1adbbf0c63004414c9516a8f50a95fa5dd9d662a0e75b29d04028f2e51556ca2"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"993e1dca6af503490be9aace5f7c5a87cb5eb6a0ae2394196351e3bbdecb38d7"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"115c4b151deb542ac05dd9dc7852b851257124d4158c6cace3ea5428976d8ed7"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"76f83b2b85f0165c38f8b057478de368139bfdeb4284d69c438f129477fcd07c"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"488e0be08f7d6c56144d78e7171e4d69f53f20a75462ee56bf756c969bd80ff7"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"fef063a02e7efedf0511b9db1a263817a4b2d7cb2cdaf18e1e92031ba05bb4b6"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"bd59506b9e9143ae09ed7b2ae03f12c1ce2a29445e769fbc090c9274fafe1cdf"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"f476e6f104682f0458a80d774ec6d04d2f63bfbbaf204cdc53529c83ebe81aa7"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"2ab08ab403ed41f5b380d522716bb40dbc15d2d48c5ceccae7fba7dbdecb6bde"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"3db56504ce23037b927446dd00f926b86ad5be1be0a50ca20529921aab099dc7"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"bde842e5d5f86962b290e02870d0ca12dcf8e0c1fb23531684de9f9f80949880"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"7fb2e327b413367255fd76b1e9443753176cc872013212704f817e7aea95f8a9"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"4d7b9cf1d839f272f2f9e8011a994d6f5fcafb51a395a32854b129083f73676c"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"dfa26f8b7bf15acef9a06e6d83c50b92eef627da80b5a1720d7e759b4661a88f"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"b42a79ecfad254204a02293f313f31eadca57c5a467b6214e6da900314acea34"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"93f52620e23e0579268471db74af3bf3f2a4683702db13ea24d1f6108a25c6ca"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"da37bc37098118350ab27b6191f43a39a11bbe1357949ffc32b814110c553c81"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"1c521f1825a97e8f3317e9063794da58507ec0463ee047f9a95a80274640b74b"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"1bfb41d34e39cc1d0dc63a1c223b7faed7630c52c7326fa788991de7fbbc26a4"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"078681f2ec2c70768c1ec9237153d6878154ee38eb84e6a9a4f3c0b2773099c0"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"63484bc6e8a8b9d71faec6381cec5f123fcd43a9dd3c02ecb82763991d645fea"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"f5bfa34540ec07e9b125f385a9ca947d81ba1ec01a8893fa6a7006f089db95e0"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"0b8e83acba80a1bdc121480349ce0b50d11448d9ac0081f10b7344f286b07335"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"8291707f4160c3a6c1697c0660f7af1e6382d34bb7e7c4a073760a60da178112"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"5e03af784a7b178efbe20f94b2d3a67e92a83680d772739dec94f09c6d8e6935"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"3219ab5b3e413774d892432a37cd2d12f620246fee320dbe6777d2f3bb8fd745"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"9ebbab175158fbe4beb042cb4ac69c07dad7fa25c5406d358089cda6783e3d92"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"8546f7b556abf411fe453f4ed51473d71149b11381e99f0f939253c1089dd3b5"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"f714c7c06dc7b3b9b459c9816dfdd9acb8e381dd70a4cf5c620b95637a5c28a3"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"557704ea4c7a400628227ee94e081ec1a09ec193ae597a30dc8d8bc8c4ec6e22"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"97519e58ae9702da3611bc4896d34d2488123468abcf1dd984682e8c0f940e84"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"794f4a46b296d1d71739341a415f26fa7171bbb5473a6da422f579f82a52c70a"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"69e5e9e81bfbe1ab7ffb300f86827b345748850a51caf10047ed16545c7ab40f"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"30fdcbac1819daeda26c580fb5044752cd39542b938bd461bcfb521c25a03399"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"d89711cb4ccf5d49f8d6df4ffb5787ad6a4d5ca83b93163020aae34ad6d4b8c8"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"addcbfcc5628cf8fbbc05d26f78d92bc0e1e061f5b94d3ad1e6101a3eb7fdb8a"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"c43b2549ab1537bdfa2dfdd6f2633e7285335618280d834ead80d893895d5797"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"2416456dccb0518d3bdea1f8f54a890daa67cc411c0d672a625a241b6097b11c"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"0d3224a6e1bf28cbc734b8b7c2b68335801307e4819dfd694d5938dbacbb04aa"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"f02b9b82f5c46574882018faf3ec3aa6fbbcab5e47b18ebbcd0e32b4014da229"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"dd06df60bfac195e7fec46aeb291d694a7d469f3714ce316feafc7ce6a3679e9"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"1df00d08bd0093c89f6eb2248bcd58c63e4f947142b6951dc75ac939d9dd8d92"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"d7420ebfa35c43e80d1dc30ce8c658015331a445285be44c63288a0364a49ed6"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"c7a7c0f47bf53c7617865766e4381dccb0cc6181efe8517ff39d2fe9c9251e64"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"4301c9e86f4ec8890b8311c48bb3e95788095e0b5e8a8e91cd6fd34d0ecfce0a"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"b72437dd5dfe54b4e26c5f787b92d01811d86159f5aeb2636f0de790d87f0cf6"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"a35a5ee685bf2f2ae09cf4279b2a00b9c5ad152e79acb09d63f5a5d9f843f411"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"3ca6739367f6711f2d77b5633899d234dbde6e3cd94bab27df2b510a5cce7803"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"44fdcd6d01398e12e4fbee23e8a1c94ffebf09f5fe51d32160ed4814bd294272"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"3d0d17e46ffee0bdcf1c32a44e32de140cb485c9aaa9808884fa9df0b1430d8c"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"f0b68650dcb33aa7c919997f4e2a6a3e187220594afb578041162a9998ae813b"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"1b8c38e7177f871f96f774a89f13de8c1d5efe5fcde50c7e8a05909ee04750a2"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"4b0a65dbd2b2cd9b673e62bc0f113d7735e7d31d34112ab33334d7faccfdca78"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"e7adaa84c80cd68dc01a6af050998a1dbf36e3fde66e38a19b1d8a13777d9605"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"8bc98efa822fc01aec87e458c47a84bab7c3ad20b3b3804cd9549bf6e40df231"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"3cfc8265b26798c35a60b68a4995e1002060f50f2194f1dcd510d6926d7073b5"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"9a5ee88f88dd4cde5e0c579612527422fafae43a63d80e0df9121ea93d9a9a97"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"36e477c41b427fd6e0e941132a7b495fdd847b3d0e130525ae7260ed579006d8"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"c4fcc49befee4c503ed7caec7a614e8f40015e3968e7e62447a3735b573229d5"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"2348ce90fdd3a2350199f3d16f14f28e6b1c11dd2180a128014dc5cdb359e375"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"d9ebb6e5b7496a03cb6386dc67797f987a694078428e38addc9d32a65bb8daca"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"47f8d9ce7142d3d54c75091088b5c39f158d3d84a390e0e246392a9697c40507"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"2bfce6a0cb7370ea0db1f186f5a4b8511a6265451129f73e77505d79569cba18"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"c6d82e8458f41e55d565014b6176a0516384e9ddb5d082481341f9e65da682ea"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"8ed4ba18960556df32067565a3ca462f0bc11227b4a50773ec66bc29f96c5d25"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"3540bbc50f5a7df8f4368c79599d3cabd16a9c2dbee236fa33e6450458ef9254"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"95b1eb9e7c0a0669917509d389a8347df4951977ec028b3e0bbf10ca732800c4"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"d03a46541f80b42d9d1a6cf0a6a550e73737f7eddeb522d26f148a66c6c1bf0e"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"bba5a22744859aa983eff999ee547910712da0d4fbb62e0f9e675246c85a7e91"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"efd50975641554dfc8e3cb7e02276c35fee7d90975850a70b105b2545b201013"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"7a44418e4dca15e2bca2c881c15e8064ba162808bb5fe85e6c1ae3b90fe7eefc"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"42ef2a9cf9d077cb9daea370b0e4d2ca278cab6bd8d938eb02c6de722bb36f9b"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"f261e0b5fe73bc090fac46a0d919a3897144a7a50b0a9975f6d02401539a587d"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"68e3a9f0e77ab2decffe55c6e8da8b0f7415c3023922006d5ca0687892973db5"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"35f3e0513c1cad69a0a30a1ca7c0d69eb9e060ef1ba404ca442f5cd5ed0df632"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"0a555989d286280b79e68ee17f0a3d295dc6048a68475baf6a280c22d2ee4bee"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"65ece7f718cd0856e86b19fe81e52493da2dac25fe146364d571951274b06c3c"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"e5040cc28783b150fbe28ea1a89eaf8c86d608a77ec4d51c6754d8c7f37affa9"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"28d2d5890820f7386f32097155a64474efe2ca6a9252db733130f86e64af1d25"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"6715aba6c506c789246dd0d2492530a76f9e511ca9689a5506abf8298cde2f74"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"0a8b9449c7f873e2dcdf6c285f767c7edb23ff326d50d0818b9ec87231ab0b25"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"06d80099f72ea799cf08bc01ee648757683dd7e6739a7bb3a09ed90ce66ab5c2"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"31fc8b7c4f05b933490c9941323733a7b70cd4cb2b31d69c4eb3a107ede52c3d"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"55a011b2fd86ee7104665e3e9584bb662dea7e9bd0942a054df3588d3674eae1"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"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":"7f2631c0ab3a3e5333cf5f54bb3701846559141bdb6bc3eb50b5ecea1c99bb71"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"423d2b0f70b2171a991bf70a498c96cad9062e7f6352286ea16932679610693e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"c425367a646306c9f5eafc69b277a1c6b005abe10fcf4c47b059ea05a5bfba95"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"46999d3b4e293d880daeffb4cbfedbc6eaf6fc2b5ae42002b24787d7f2bf1d64"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d8f3eac4f88fd894745ad662c8395cf3d2180369c4d04abce34789b8a7c9dfa"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"d308ead18d56a4bb8e1f007246b0a0da70c3eae882a9acdea2a56cdd403a0f12"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"964e185d4e2f22484a8c896e9490cd76ddf98e5e24637d23216fd57152e7aa6d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"a060a71d103250609b34aa6722df4eecda694b808bfddd56101f7b470ce0b218"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"4509bf0d63f56d94ad260230db8e24b6b0ae16b324a14d0c44876fd5975ab1d1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2ce80ba2f58f381c01c015e926d28b2fd0f78b1f71a21b8fade72eb038344be"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"d82ae59e6599dbeb00c25ad07800800a4fd97a7f1574526104a48f05d09262bd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"394b89d01e2b9f41c3e78b3f572bd8837398725f9bfc18025121adbb6b7aba41"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a6bdd6963ae66079b23c91a2bd063f34f3967f198c8152fc487b473a7e4952b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d7604b1c03937f0e301a59b547561aeec4b3a97b4fb54b41e46f02cf8f17967"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"5359b71fd563d2ae52b6dbc45e829b7b92dbbdb249fb4d5b960aba214735d471"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0a6b33da6b3dfeb8d58b0ec6fadbf27f872c5ec7542d546b88177aec3ed92b7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"0daaf0ebb642f8d4013548b4831ddac598a74b5e1b11b61701c1be331c706edd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsUtil.cs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b46ad22e13aa1645b2f2d7b7e3e8c6af8c6c4aead4b8021957b1ff2cb9f18ab"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/UI/form_MaxSize.cs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd0b653d28d695295fe7b672936afaed25e93721bd3790d5e1590055b42e48ad"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/UI/form_Orient.cs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"168b5b176b1a7827bf1f8105341212d96a84a66314092a56e7ca628fc70dec9c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"02fc0bae80c89a00171a0cf19f57e8b6b537cb76cd1ff6e37fee99b3d5dbc70a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"70a45045a696a0273ab727a2702d4af73865aa1bf31d80e96fec153bc3dce0c2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc640a53441698eae2098cd3601450ea86fed1b20cbd4267711a8a9d735b8e5d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4ab786b211369afc57cd236a3a50cd4bf465ecb2106f7e56fc92e0a74a50361"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"4306aef813781b31de9e5a7fcb0c224b632bb5ffc771ad1656a51c3ac920cefe"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"5689f26065259d54f393629eaa37a98a22d07141dac7727699cf71bdafaf26cb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"760692ec94ad63c7786344c5da7f1b2de0777fc58569c6ed4a464e49a139944a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Data/clsSettings.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"1350e2c443d15575f67f4e7ce4c9a5447ecb1c5087398fbe858dca077bed4ab8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6ad90a0cab206c4a29888b0793e5c4581e23eb968eddd5fd3b81ec2c9a49a2b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0c31ba638700982b2476624caf0b78b65c76bdc5888d3edf98c1a4a4bb8cbba"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"faf92883df6084b84680af7a963387cff9b5d0d0e68aa7161c0d157b93d67676"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"295d6583e9575df6d0a7aa298d9596843ad81068f37f318f484cbf3ffde16396"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"e943c25290599b33ff8ea0a283aeabe5edb2752577f29831fd9b0d94df1da46b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2b69103e695024e60878422aad73d10c869cb4005a7a8385e781ec192a399a1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"226232855277bc462e2f6b0576030237ab8b7221800f61cd8d8193bff9f5eb6b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"75a13b7640ddc408b791f43f57a8d8994a6147c8930b3bb5c7b9f8448e9626ad"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"2caf449120476c93bc2a5b779378065f60ec14477b118635da9ebcc4850b6774"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c870204157e36dbc9d9dfe28821cfb6787273943338cc82bca355a3941793a7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"400a1c75dfb2896d465b1ba5160bf7a2c7d32017eae71ddcbba2ec851938fe30"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"20a2bbc88763f79f360693a0f3ef41721d3ccae53359811e7fba849293782836"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7ea90ccc4a3c3495d63d7a32cfd8fa858bd89873658333040bf17366030696e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":489}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a450ad2cd0b4b2f3e89b44f015ce66fe0206841929f8c0828d7439344bd74d4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"dceae3f6b0de5ba29579a654e419024ece90e40c5a02bfeaa9ad853cb3c4be8a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"6017519fc2be237bb7373688fd3b0fd945bf4be9ccefae8ac119a0d0e348bdaf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a7292c2f47e729269da87e410ed550864c3c35c8123996c45363d2abd408fe4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/Data/clsSettings.vb"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"f95ad3504f62d70e05475fe04cfd5c06d3d58ca01457b97c71bddf07788b0ded"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"01da9e3ba95f6a6faf2918b8514a0d643d39ba29282256f262699d56e2fe7d28"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"513ad8eb7f577fc0bd43443136917b1743a8519947ed8cfde2fca8eeabb2c77d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"b26e32345e84c7fce219ea3e81a649bd632fee09298a2a692a11509158d3caf3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e014681290f4d1b9794685c197ff5abd1fb0260dcb3d3aad3484d064a13f4a9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"86105d5aa1da615a165f2e444ee9f69c6693120d725fc856d081a88aaad9245d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"af40e5a9b8b0d1934f182789bb129059a19a3120fdcce259f6c13a056d38e88f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffaf6a480251f05c8bae93135d3e3f3fac01b1a80cace425125eba95ba2014e3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"964180bde46c675434a1573f0357fa50bf1c23139195ae392db68f09522b216a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f51d5e4172333b6497aa4e4c585018e5f1114f125bcb7c6ecc25131cbcdfe2e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"5782b9f9d42a6033b5922c7a8288ef03a992e7b76d89a0d3b12d3e0320386edb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f44605dcd45cc4d737d672a89d2ed25f545928113a2489eba9182130fac7fef"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ca7089b0c447e276f4025a71e82c9e2e9168447e5f55b86b4d7c70bb1f1076b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"48ec14abba350a07a674672dc7cb3a423cef5ff544dde6853ee5518e214b839e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"def2fe49fff83c6fe7c0de7bf7873558ec661d977901f98df0f910d6e312fee8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"3195f719387b13b58cdfe05f49c624f5b34b3c8e82b4f7460f656bfdfc706c84"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c6065face1fb5d97f342e6dfba996ad2d55e5f28c2c4204922016f43efef045"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"a59353c927949845e1279902d8b72ff7bc40aa625e7599b242342d81849887c6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"7da046b22a6b46480292a7b1f67dc206cb3f44b87a8b13898f6b87a48aeabbd1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"1581ca4028fdd2114916293e64c6a8a396ded92f39c57b12865a6888a3fb98c5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e711e271e309febf8307689200b0124d1dbdaaf4b5018490d675aef0bc95d92"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f619ad92db7573500ce5bb654637f2e346c1ec4fce56cc4314a1788d040db3e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb0d946f9373513f969fd0d6cb8a9d934dbf41915a0f583d2465c4eb9a7348af"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"e51d5f9b773df88a1ccd7175447c5a804071fb43d1577bb9b82f85f1297882fd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"f789da96877e3e6156a82b3f4d07a06bccb961810e0a21c58d12c080567c8deb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0ac880d2294913ef5df6a5c746bb28cac155fb5b3d97fdf0aa07b6e5733b108"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"914747ef4e35dccf917403b1b49cd34876386812380b04764b9e7d1502214786"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/Data/clsPara.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"601546e708e2fe727feee7c36525c9af90542a7503607d654197bbfe8b897dba"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/Data/clsSettings.vb"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"2946c4f4782782114d921195c7b053e2aacc1a9ef6f036c8f356888067b9523f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/Data/clsSettings.vb"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2356e20ae29e162a219541c872caf3c0243e1192f49c9cb3f6b58d2b6e03fdc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/Data/clsSettings.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fbf88f4b63d7678f125bee52ba07b9498463cb84a14b2c673e41afb414178db"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/Data/clsSettings.vb"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa9f2cb9d36924b17345f4dd92b40fbc28b663443ee009b2dfd82a41d8bbe00f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/Data/clsSettings.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"130ea0a416ec2b22caa57e05a7b69c547ed1ed1c85d6c6223abfddedd42c9fb5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/Data/clsSettings.vb"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"d45ebe367f9331ec53d85342136b9db2ff70d367e0889d50e78d833e8f34491b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/UI/form_Main.vb"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c330468493821de829935dcf6a7feafe8a058465e8316c13e01dffbf0e8bc37"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/UI/form_Main.vb"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"517cdf3dd324410eb1aa69100b667e81521728f731ca099dac9801d87f8d3fd3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Directionality/Case.Directionality/UI/form_Main.vb"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"56cdc92e6e622465f454e52203e1925785b89f2bd80d000405c30453cb0a4c9c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"2beabc229756ee29882c4837e7d1ce5a4c2b29e2c68031682b491ebe516e9463"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"14f774ba3d674538c2d8f81e68df2c28fa02bc3982cd691c9c2c0ea6fa591481"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"361971bfecafbe74dddd37d4a2cf460b2e13174525c0a4e0e67d31c8526838ff"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef12e3e3588efacc617bf54d6bcacc208b83db2a1e04c0a7a96d20002c75fd08"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"19bc1fbf267686f2f6cf824ebf0514e36f3672a63a320ad4b4463440f7e85d04"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3deb6898493cd0e2ef15d270aa414ab326812ebea2fcb2168549566224f20b7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"0124a1c0522a6c353e44c10a14f36f6efe196e0d33df4cbfe55c6c2634b9a7b9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec5639b0f75fbe5e7d6dd87d91aa25631b00c27ca3da28488826fab26b3e5ae1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSettings.vb"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbd0877d12c210083cbc38125f3ecc8cc470dc3ff66a2e69d5ac23bf4bcc5b56"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"2503289d892ca5b70197af295a916187d59e60a805f732d398daf1180089a9f8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7ba732218fb54443d2b60f1a96da9de78989ebab22e480cba64c10259d45b10"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdfc753d57d205ac708cc1389e14215c1f94f01382844ff3ec62c20715ead9dc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":392}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca7eb14bbde91cc6444162915c8ce82de4b2750e29e603311eaa89aa6bed5be3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc0d4b234764bc674c9199af5a847098121980c7ce5d2edebaa509d39dcdab6d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":487}}}],"partialFingerprints":{"codehealthFindingId/v1":"3dbaf9fe6468d13684f829402cbf054b5429aed8dfa26cb3f4ba2d418b0b04aa"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":497}}}],"partialFingerprints":{"codehealthFindingId/v1":"0177bffa860a6c1abe0ede3ae0db995bed12801dcd118a3b80168e78e22b34c7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":524}}}],"partialFingerprints":{"codehealthFindingId/v1":"a097994ffdfb7b371a270b1038d7164169e57616a9677f22b9b8767e3214795c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Export.Families/Case.Export.Families/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"42d4a6e91addba911c9d05474e87ac49afe6a3b3eb16416a11623d1426d7be16"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Export.Families/Case.Export.Families/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e9c756c1f36077a7b2869a6b5641b3dad451f16d030b9cd44ce7d9c93404760"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Export.Families/Case.Export.Families/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"0441664f4a5370710535312c275e3490cddd5d4674662f29b37b87fc5bd0fe06"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Export.Families/Case.Export.Families/Data/clsSettings.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc198717edbfa03abc1952a41c4e4395ed53f5a1aff16c709db970eb75fee404"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Export.Families/Case.Export.Families/Data/clsSettings.vb"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"06a61811d4ffcea685eaa04dff0600f9ad5de24277a1ae949bd933decacdc865"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6940c4347a204e9553f58da1d779acfdb9c22372534c768d9f951228a047c5b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"b474e99d58f01be51cd25ff9c1afb311f62b0126e7a30b8a69e08f8a09a2dab0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae97d1d2d0fb9354fd706df807621e1b5bd0ef52cf25ba9c4c592827f8416f45"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"abec7fb32c6a3499431a66f21d67b8a929641ab10ad477c45f94e6eb58b7dab7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":333}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dc635859c7d65d5655bdf75f9a67338ac7b5cff7e8b1611b6bcd73651e7d8f9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"308d334167073044dd3cb7fcd30e51669cb31359381dc7d833457b5c8a711f2a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c25ccc909b3b6b1727135bbeba5e41e4c80a255b89f236328620cf2b74988b2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExportSharedParameters/Case.ExportSharedParameters/UI/form_Main.cs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"d415fdae4434f66a345369a5b4217205c12fc102126d2628207a33e2d0076bef"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"f750588647b898440c331cf55f33e7f161e4e2737d9dfdfc880ab41739fd1e11"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a63492634f5a0b706c4115ae5e0bbe23efa54a27cd267402b497242dfbf86c1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"59f2c5332c9cb0bf618c9071be09ccf073bdae9cd9b6de5d5d1225db590765e8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c66448a922a6c361b8bbaaf65e2904c24ba758c9d9325b3f97ec5aacc570aa9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b1e1f37dd8fa91b8048cad77b129668727ce541fc59116d3833b10656b45193"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"611e03dfad4780e1df54a8c246391c406dfda9a55280e031578c460e9f3bdcc5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fdae53227153e80845ac5ce8702ddf102f54e3e3334d8100709fb4668a31c0a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"5918bb14120cfe3cc33c9d95708b6b46f130af7aec8996cb3d5d740e312a0234"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"13ef73b4b32849a08a7b767512ac702e4d1564d3494611e86ca41fadf3f88feb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":361}}}],"partialFingerprints":{"codehealthFindingId/v1":"03997b3b12a98ec2032345bc4eb1102dc895271a054083ce24c6e200d9779b20"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"eeda0b710f624bb223875e55331cdc3fc8afeff100769b5667f7aea58fae8922"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":417}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e2dc36ff0c14ded5523bfed11de7c084d7d352bfbe8e1f29e6fb00ce86dc47d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"949063675a3b819a92defdff0ca7c2f1091b9df407dc2ae56c781d61b34c2360"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":495}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bb55f249145c3e3f4225203892a148026cc28a881a0ac377244f32ff17850cb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":516}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6bb85508b9eaa1593d9ea35f544409a375eda48bbf45d2bec3fe54170cd9253"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":559}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b1720f3c735993ff33da49aa9c1bdc08fe4be930c36454b98ed40242ccffc1d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac488d11ca8abaa685dda1cba00f9754a8c9e8ff5fe75c447e5b98d07815538c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1953e4b2f79ed19d27a85f180dc1eb2eae44fbf9118ee0e5527d6a637b68b18"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2064a365dafef834cecf64db9ce1eac6b48a88df8cc86b04efdf6c7380126b4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbf08429b46ada8dad6fe0c01aab0aa75751b30a5c9c529c9071e1394d1c47b5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a7cc2f495df785d65c89a691f5dfbbb5c7993f44d839e9cb47b27b571bbc373"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"88ecffff301b16eebb6dc8a796e01d35cbdc0b3e693946f6b95fd82efa9b8ba8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ae08e93dff106e5a43eac3e85be978ac48d0d4d2d61f8a552f4eb184132c4d1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"88b1b89e9e29f61bd34fe427028d75fc2630a3efabbb419137f0e056c66f7264"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"57d3fbbf8ff9d1876d045ed4437c8d0da8773410b7ae48efab3a46704f622ce8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsSettings.vb"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"9538da48857f23f81c321b8640492589ed50e9bd6352ba53bba0ff3b4671f679"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"31f3281f4f07f209137072a713184a7d0ade5add9f9e55e13eea1366f56cecf2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3e6c603f0ac167df4e253d8f772af29fa1dd4c58b108a346206448fd4b6d65a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9b627eb4bf847e86429472a70ba095145456382507ff885e281c86df1c6e594"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab535e8b719c2a009635284303023dd9f182608fc2625dcd684ae2920b9350ed"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfd90e2157b38ebcc13594b31556724d26d37d0bd42805d365bee48faed75e29"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"1007965de885a838e574014d98ad09ae9725b1f812afd5271f090e7b9e361fb5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f11ff72603335e98416ec87ece9f71ecbcb60ee84b15b4e413620ae113b67dc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1bbf89c5a796d0178e4cfe0725898de2944e4f20c47eac144a2e0724b4a1853"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c4defd47e0815ac5bc49ce71b1b16c13f50eb8579c2537b89095e7eb3a147cd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"601990b0b4ab454a50c1b0c8a5259537baa7ddbdb4d3bddfe038976fec9de484"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a30a5ed3a30de7685b714c6d9093be23cc1f32f6d3a4b38fbd1a81f89b2b8b6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsSettings.vb"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b134010596faefb515e498f176d9667b6c1f5d79221d275ac4b9912576cc674"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsSettings.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"67772b55def92b7c3bda87d612659cc5a31779603b46d5cbe4d8234c21a8ae89"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsSettings.vb"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"051ef90d3f7f596286b53b2009472caca40a87b9c5f979937273cb679d246f8c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"613917258f74a06a27b7ba1da0cd8525eeb2dbeb18befecbe32b901aafef21a0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"75ad58ac1d5ff40214410a0f959317b3eb35e88e42892511c15c2dbde9b6ee92"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"e995957158118bad67b1b7354eaf9cbe9867ca9aaef85f90fa7b6e472dd8c0f6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"daa62af14bbd8bbea13eb513b61f766c90ae90bbae8fcbd7cb528fb7b76d3dfc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ac6ffa65089ddc7e4b0ee2dd118cc52736a512c3b7e21fb2c9b9696e08bdcd5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ImageToDraftingView/Case.ImageToDraftingView/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"7196480cb041944c6ed64f061172401d29eb275ad0d5cb59e45fc2296ff56813"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ImageToDraftingView/Case.ImageToDraftingView/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"75b05452d421143c6115e5be5c59402dd3f5f78966cc1b1c416e523a2f347c67"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ImageToDraftingView/Case.ImageToDraftingView/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"d55d6d71870fd7cd9bcdba389ca4660ab07a549f44559f9e0bddb72d69b0d055"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ImageToDraftingView/Case.ImageToDraftingView/Data/clsPara.vb"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"590e7dc0ba80f46dcc76a049acb3deb5dff640ee459e88f687c172fc65a39343"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"37a5d76b2c49b1cc7b5079949374987c1a5af1944343905e2ce8ac68bbd3b578"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5bd25171747ae37ee40c49c2568a93b5c04ae17a0bbf95c1b66b86b955eda53"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"6296600b526fedb831557010ca22d1db2416a47ddab84bd4d48731c74c05f45f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"bac416d2768061c15a425ce9bcb682b4e928f0b717e1fa094c36cb2f635e9f78"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"47378217b1cd58d48dcd15403d86d3dcb7799a09cc9c25a257e0e08bfaa4ad1c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb92e5119304e9927efc73c044991f351494a2c816f640de4667f7cbd1f6e446"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1ed268903f01584d3d15f675266f85bbd89c4d08f83aa212e9c0e2cbeb4b0dc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8ae94f446b252d1b047f2b4cd326741125cfb97e013209b5c67d4e4bcab1002"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsRefPlane.vb"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f26789a0c5d903f20abb545f61d8ddf1526738bd54d060cf246308feb225921"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"260efce9477e305314583351fd6ad48e2de8631c57581e8a5dccb969e828192d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"e56baeba77a4eefd0f8e40c544d461a47a75bdee98de78df2f61cae029c93e33"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e4015f80746b28d7cc2397c690c2268da1c0c1f652e197295cdbe6356ed7be7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"1979cc7191f2adc66b2b7c1d5af6ad0fde8626eb3319d9ce7f38aa5ad25a4121"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f32250d98c283cfb9de1f559b85784af33e9625f94baa4d39230e0918bce7f7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"51b7f3d136cea5ef6c11c30a92c7f745ba6a6854d97b92b4ed33297984fe0932"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1fd62ed87912e3a886b201f21465a43ea1a8546ff46c33a8e353325190800c5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"62f46f4c5f08fb4b058544b05fd654d406650f9f47da0e2a1fd74f55f9e59d2c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0a324d8bc8230c71ab90e3d4ffb2e4bfa5273f1726efc9a9dab6dafb1e629de"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"150a2e62892e61376da228eafeb4f9be6d7c56bbb6063a46e11376659fbe77ea"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"303e5ade074d2ab7d5ef676b81b8c550ff6f6fdb8aab6806b525ec41e0f98301"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"5740bb0fe5d4e2bc157740eac40b5906a2fcd1ea945abf4acb31be192f12327c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"21c19adce5ce96816e33a56130e3c8d909e845bf137be42f4514f415154e73b5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"171dbdf78eeb57f60da359ff5e86ec8c624c20bb0928544832f01c8b0e4ffa12"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"4156c4cfbaa9c34692dd7f3e389c75bc26d47e6a269accfb29e1f3f4bab18a49"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"605422de4ab4b9f1eb10bfc05f0a56a45736bd1502abd3306c6bc85077e5eab0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":373}}}],"partialFingerprints":{"codehealthFindingId/v1":"94f9738f2ca17c680b8fbecc4bed072cab970af6e52f5f320cf191aab619f6cb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":378}}}],"partialFingerprints":{"codehealthFindingId/v1":"18be92307cb088dd23c7170591acbd3e6683ed8204d4b31175e77234a8564e8e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"91f3e1dfdeccd7d1bd4f8e3f83880016bd2cb41ffc58a39ed2c12472c5b685f1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f0b4ffef48295ed8b1cf8b59b28c893e99dc3d3173e99db05c8275bdaf80ebc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":439}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e2400e6b63bdab1b360b42eaf7d206060c98d05fe9d272d0a8aa5ba7bf7dc80"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fbca44e13b9f6c13ee477a5648d67a8dce187d346d5178b61fd591f593a0294"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":483}}}],"partialFingerprints":{"codehealthFindingId/v1":"8811a7080ffa47684f27f2ea69197d7b094fec80c675feb23d8654879aaeac0e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":499}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff0791d097d0f13b647ae6431618e1e325b6e4b825e97b30882ac9c316103efa"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":526}}}],"partialFingerprints":{"codehealthFindingId/v1":"597cc61333be10a004885824d98af70c79ded1e9bc80e6c9a4cb7c8038cbc0e9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":531}}}],"partialFingerprints":{"codehealthFindingId/v1":"e38236b53755b3d9d212808405d5114c9208442b5da849852a066b482505bce1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":624}}}],"partialFingerprints":{"codehealthFindingId/v1":"77984f8230a3ba77fa2b4ae3e9675766811ddd199f691c1571dc3e8dfef37221"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":643}}}],"partialFingerprints":{"codehealthFindingId/v1":"92e8138c55326d4f6ad63f2fe7a3f4d53d239f1cef3d97ff19003e37b0a6105f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":657}}}],"partialFingerprints":{"codehealthFindingId/v1":"18eecb0f0b068e8a4a3d688756e0b8c3564d4d18c8758395f2a96223b0ce084f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb7914e0b46ae7d8b85ba273166589fda5066cd07600dad9c752a6a073f926a0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"54f8c8948c5b9401882eb2b73d6a93d4ba9b8e98a96c28289e71eff9939682ad"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"c91384abc072c59d3ba03dd11953cbd043045031dec89a43f490ebcdfc483ed7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd1ee408c4620fdf935498e95ccae4db05927d24e24843694595fe74e121fc20"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"9619f31705ade804b9a2372b567290f5eb9f5af59501e619cd879bc32e236e61"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd147c4a2e214f8dd3c3c6ff80cce06198763ae637d76a9eea0195b3c2880db1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfc0a382cd6087b1beebfe97baacc627b101ff7f47cb09e697fd4fb013ac3932"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/Entry/CmdMain.vb"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f222af4d7b6e4cf57548983fb19e7e54d86f21d7213c0d4cf98d61a0339910b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8306c11513aa77ee2c00eecc23faef68f97f1da49e50ad80f761062f319f8f1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"6048677cd98aee2d69432c7fe21f6c63afbe28fb7799e80852f9e145f2109793"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c574e25ac8f640be566f626c93ab2b6240f9f0e9cfad0fce713a4713fe44d9d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"30330d8d99dad8b38681f8efb3eeb5b978f6c77cf2ba2d5b18e5e6797b088296"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"4439f78deca81da85f317786adacd8e428e46493f3ce8b80e4fd6cdba6df7c72"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"98d87294cf208ed4adb53ad4cc1d57cd4514a1bd449ae9fa07ae43d7b0cc3b62"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":377}}}],"partialFingerprints":{"codehealthFindingId/v1":"75d119a44ef6a22c9af3af8915faba3240b420e0b909ab83d43f547f157622a1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":430}}}],"partialFingerprints":{"codehealthFindingId/v1":"30ff7a379d17ca085e0300bfbcdd94e5e1760e0ae66763d7efbb417eb9ad6c9c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":435}}}],"partialFingerprints":{"codehealthFindingId/v1":"50cf9a2148019c42ff3055426a52d4ebaf9b98aae327c948d0fbcb3daa1fccbc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd52b8fd36946cb656a90e24ec78100c9aa10c67d67f58a06a989d0c01ecd4b0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":455}}}],"partialFingerprints":{"codehealthFindingId/v1":"8522b2221ccfee882e373d1d208507bfd7dfb2a48d8148ad68a50a4fc07bcc4e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":458}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1bbe099ce8cc885d9842fe0ba2f53bee5852b29a3af1f1efcbfddee70dc69e6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":484}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ef151e9149bac5db31e41cf64ce90f5363291930543f618156aeb74ec0cb7ec"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":489}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b5ad5b36db74e0142b1d74ada5b5dd51e54569e62df4d6306c3d5445970b411"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LineChanger/Case.LineChanger/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfd5c9e09d8e602308b980913276d931b172e1eb693996a77405984ba93ac67f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LineChanger/Case.LineChanger/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6aca9c89dc04be79f7beb6ebb85a78f2bef9b9b21d830a21a93366ea6bc1233"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LineChanger/Case.LineChanger/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"3636c6a336581ece4c0f6b67a29d5da15b0d367028e82b0d921f3396f9f6b783"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LineChanger/Case.LineChanger/Data/clsPara.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef8c9405534f9bc2cb3fe19ff4359a231ba2b8f67e7398bf85baaa205aa16b55"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"97417584f5a2dda62d83db56a72003083146a24b71630c7b65afa0f4e150b1cb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e6ce3463dbd47a5fd3e180ba8777c431392112dc6c5031a35ab9acef91d8ed9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LineChanger/Case.LineChanger/Forms/form_Main.vb"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbb5c140849fd2a6a88a4c7837f4a12ac61dd8200aefbb304bebfd62bc880c0d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.LineChanger/Case.LineChanger/Forms/form_Main.vb"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee2519191a2e44747d40b49b3f5ad6d6bc611677fa6eed02210fe0e59a6dd31f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"48660ab337da2b3cbd5eefb08b2572eddf38d66b8bc3671a8a5e9dea0e590d45"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"04adf4a82bc6df60fa0d2f03c11b7a2f4c88adf3942dd6ae8086cc240a350dd5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"1df5f10c18de5d7c340f1c43ea7dca57b48fbcbff13ca52031d9e6256a23a8f9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsPara.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"832bf5c6a6c14c5d0732ad0d26be9473d06014b6522cb803c21a4c4ca2e9a267"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"87edfa9d33d97dda375eb72369bac11edcc80734cab226c08d72918fb4760d4c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"03fcd49f16596d20d921dc5812a671a9aaba46c8e2788eb9cc947ae35884d84b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf446f8b401677cea73b8ae67f71e9370e9a2dd9f87f48e0fba2a114e75a8b41"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ea738436de57004f0fb10685a7c86749b4b576c111cf24730189c29635e31b3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"94cfc0f419d22e43e146f4a2062a7bef4c678386dd0bbfb23839be136edb5140"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d3a1699552cd4c766b935bc86164844e15eaf59ac7de35bb12da976fa862b02"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7692aa7335a2a220cf00b50d69de70af629e4c3c952145311c00e5c369a921e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"2132037e08dfb831b57b56f48bd7d9ee47fee0d986bd8861e16f1fbaed5bb4f0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"581b117183e99cbeb5b2fb11a0b188105e8695eeb54c43796d404b6604d4a129"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"f59e46da4fbc80ffa0f69b0bc90337b29d8935a3dad5b3097d6d4d1db18bbf8e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4d750c852f842564cbc06fd1bdb0ec60b1b5ba355dcde4a49bcbdbd25784d5d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6e8c56256d974defabc9745643b47793e61b917d2dad6d7b7261e19cdee8d22"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ab87d94bd89a275599b7e4608d2b7d50230742afa41c216bb6cc6d2b49b2a35"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb5452460ed2f3b421778a90736a6d3c9df03f39e5ce7e3b8723f7cfe4e5215b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"006987235224a708ea1296cb040e0e031f1f0556b56a19b18b145cd1f397ec60"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"a73cbde7108ed895441c5abaa575c39199eaa49a5714427653e9a527b940460b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f63bc387ebc3b71f7de7e14570d86300a95487b0e5bee7afe297f376d7c7075"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"a03fe61fb876cbc57b8a55a702902c17b3a42ce5b98942a460216ef51f5cede7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fc296e335b7a82603d40d719dfd3c94d59037951268b443b73c286516ddc286"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"846b66eab91ccbeb343c2cc2f74b8254bc4c68e5e88ed04d6d94e30b3c7a27ec"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"96f8d66b5647bb5349d40df4f22c6953b1b8fc2f468a94c47a0a1f91dcb53a33"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b66f0a2fceb6a41683535869510e4cec711fcf96a2ee516409dee929c7fdea3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6db19919062d105a470f3266811c55a83a0fa769fe86f3147be65fa96de19ea"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"e48bf14345fbf6564c8906d1e3ef589d8962aff97a53463b3f30bcaa3d007023"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"59c702efab3149f4e98587206ab5ee636c534cd1d2f45a0fa0689214cdab9e7b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7194ebe52e80f3280db5b895d0bfd41b21d441157c1b5df8686a9b81b8bbf74"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9945fd0999693817b1f9124e8fe15cd0a54a35fd402ece5c94152b8bb13144b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"be37fa3bc29e30c30a1bd9f44fec64c7739b99beabc3b9c3ac8e3cb8692b9474"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce38d02ca31ae86c888f2fe240b0ed772faa1346ecc8b0db7f431ea02e648ee2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"1920d31db67b3469bde0310697f2b4747d35a8ff4519650da668c4769f895d60"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"419513cdb50e4079e117c84d5ae6d89ebd764103618d2730392faa3d7f2f4115"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c4a436aea45ad866b5c033bdaba0e6c0acca4446a531f37ba3938bbe79f60fe"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"794cf5caad0a6a4c96be0c19f99abbda17d3c59f51a5cd37b17b81a145262796"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc7311258aa48b1330783b2b730542de58fff985ec55cbefc1d2e8314b8bf910"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"0429fc9640692c57579123077608964e582a40178f59c514ea9022619da069fe"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"9243e0bd91bf5e1776a9a13d2868be23490367e20ebca1f7f1d98489e377b9a2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf5a879b7bb4a1a51afcbbde51c717d8a53736549cb307d7bc31312133a8200a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"eedbfcf4e158bc5a22b48151f35244109d7445a66f8ac5cbf93fd38043ca01b8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3a25a3d3969a5b6557ebb1518f593b8c038d2b6d4bea1d0657de217a455d451"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e97a9197ea55b2bb4b0ef9fa8d69612ee24b1cd12a026c6514cfdc6f687cad2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"55fc345d126fed6782a482dc50241b1adf2a4e4599a5aabedb98813a70009a60"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c51401c50e235eba426b128756345d3a8f7b6866b84e6fe59e8eebcdf350498"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"0083cbd8882463f3ac0a38d5bc57d6a03573f0757048f77ce78570646cfca136"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"3845c071e7c22e9bb374c28fba039d378ef9541acc511cf626252aa6923c5c72"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"2aa7af29d47ef2380fc2c50a5281ac5518a6c6e14575a544731373ba6a50b02e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecc8b0c65ac0729c4b70c5994bc3d744bec39d3e403b7ad2efb51829f11348d7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"52b358d0e609e1ada03accaddfe711431b1bc4f5ea15583f53f94e59c05f1b0f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"20dd56a27279f72270e257fc941b4f89fd8905a354d8933964aaa598f3a5ea20"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6dc404b8cb2e3bad44dd88956155fa352da27c0fc22f82fde0105d71400381f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"921df3aff1a7b648336539db43cc7ea89d03570f4bb170fffb707c5b549b55f7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f6868bfe773d9dc550d86263c0ce42f85b78ae12c47e9949b91d8c82c8436b6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f6db96c707aa8a171f851bc4eb6d97e03a9e412f9dee4a6763fa46048edc545"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"9313196bac967b03c9203303a3cafede627d7d766bbdc01e196e349ebc6221e2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0bd620e56a942c572680ffe77df792cc4a569f068fc85b50319bc7890ae81fb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"39db1046bfcd8c0e32c3994dc6d05a5a144bdbcc2c78b174438d9c5bc856e9da"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RevClouds/Case.RevClouds/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab44921e8a6d4c375962f9fb15f216429a4bae243083228a56f2ddabfbcc04ac"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RevClouds/Case.RevClouds/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"d568e49c0038c405c1dbcecb640fa533935d7863b177872b79c64b756d03680f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RevClouds/Case.RevClouds/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"32fc001a8f5f54ba84da038a6fb650cd89188700f9d207cb5583c8e59f2e62d7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RevClouds/Case.RevClouds/Data/clsPara.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebc74b4089bb6592870998314800ea92b575abb884635066b7e4c7db794845e5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RevClouds/Case.RevClouds/Data/clsRevcloud.vb"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea50c48475db4a431440addf728e113e536f4f793865b031191e374ba3d28c15"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RevClouds/Case.RevClouds/Data/clsRevcloud.vb"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"326a93d6518eb1dc237c86995f8ac7e13ca39687cea63ad998cecddfdbba0872"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ddb25adf1827e99569cbee4c24a07e484d967536ae0b2c7a4b444d6c5a815b6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"20592791aad42fe4c2ed557a4a73a960bddd7162a54a8169f812a10cf56cec66"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"b694b766e6927de26538d2fa4499450e36e18dc2a8e82e696dcbf62f927947ec"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"a657e608137416f50cd13574e33b279da2d2596bfb5afc3d5b3312260d4d9898"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"86f20d59da33099e694f81c58a5239209c945a7ad17af51041ec2fb184ddd84f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac4911041efa2203136f0762621dac255d21f7470d8e09f34bdbe098ea1c3e60"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"67237b0c8b251a159dcd6fb3db5bc7cb6141352811c64dff25a4e6b432010287"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0b87a67da3a410ed81e3ee63271711566d88bd9900fffc008ad9aa499fbcd43"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"d35c9deb6cb50436848b1e7b6e891240ee1a783b90cac6406ce567f977558d32"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"309fd81a6b7c40fe56b6781da43f9e6f87a7a04b3ee629bb6c7c69716bbdd2dd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1c573c6299aa45927a04daa509abc9973c2fd3e1381b8c2090118e35fcd2f46"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cf88a416eb88215c1cc0441eb724e24beab1d44edd88b068eabd7f03c5060b1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"e92a5a1d83ddd9417d2dcaff0e98801f79682d05a828fa5cc0e35a97db54a4dd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"e12890d31e670b15d178d32972e098a3ca7b862bad11abc539805d8b9afc7f64"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3883334f5bfc3f6b99c6f4e6f6e4146dd56d3727e75f91ca69c097a245282cc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":420}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f57d9c1e97eaee56289ffa1a338efbce87a0410722457a95047f908ae3f95f2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Entry/CmdMain.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"76f3d0facaabbd433c0ab131d6f0fb2fee54c22b38a365b801eece117b63a5e9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Entry/CmdMain.vb"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"2346dbb74de54674b5339a1247cfe17e00a7ac3f0ab062a4266ec8c8d3b72875"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Entry/CmdMain.vb"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a05d6a202b0c5e76cbc00653f2ad06b9de68ad3964d38d5f99249c9dee6ba48"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomInsertionPoint/Case.RoomInsertionPoint/UI/form_Progress.vb"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4d6e0a635f02741e199e5d6a3a491c4eee720595f7560030e42f75f59509dce"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec4d5217fc113a26972adbb847f84863585656e6104657b55b93fa7f7b967c55"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a122e5a12012e6f899347fc0c3f97249a232c635e807f4b5b1e68a022333090"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"01bb600f0f97d902dc8959fac668d0e058bf5d227f5d9169eca150f42e0e8a41"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"96e5eba5d2d13388ee68c7e08db65a07006039229cd7b9bb233a301dfbb636d5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1a97e29fc43e5f96a5486a20902e36799a5c655cfedec625b011a0208ff497d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d74e887a1c97c5ef8c497b7bb1c38f4475b1b761dd2306d6839ccedc17ff7f7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"8eae0b3839aec4c0b4ce256d61c691d90e9055ff3965ee23bc8e887146a6c262"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5747b90dd9b4ef637f919f6b39861185faa0714d5e56b6a0ade28a52f86db38"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c913ea7d4a50d7ae690a845c08b6b925071fc61f459f29aa5b92d8f9d1e6636"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cf5028225477c189f309b94de2dc992e02920a3913005e10be6f8ecc46c3d4d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"953c7d392317d5ebed477718b6d9c94a8789b5d6317da685d3037e1b5f14a63c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"84aa1f0cdf682a60c2f2f48ee464cd34146a7aeef41d6d5f2850cfb7c058a76c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b89898a3615c9ae6ef5f577dfec77b1f6fd1ddded2550b8645e4e0571467184"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"bda10c1c4173c611014cdceffbf545d620be7228fc911b5a63b252dfd6c89aec"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fea800b18d8bb7197476a0d8a3cb16136d7a1c499af5e88dd3e566a4490353f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8d7ae1131bef2c504b05cde0390fa4e995b11c48f3fc9bd6fa0b35b0bc486c0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b27ad5b12d712fe06e98eecd33a1ce301f5329924a4cd04042b0b00159279d7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"c455f20dadf312574defe13e2ff2cb2e13f0879181d739053673fec2cf1bbef6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cca6427a097c272a8db0cd40d406d546075899cf71ee3f9def71653417154c6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e1ab694ab3435f76f93843e0f77ef933730c30bae04698001b896e310b39f68"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b3ff14a27a0e2316d8bd9a357cc4062d2b17638c5057481731af05f4f5cff15"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee88d18ba8c3a38450c25029e53340772ecc7b7a9031de986ceba665d85e1756"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"c16e502373c3b003ecb2c39f5110baf4284f2c085c6a2b3fbfe84f218b1d2cd8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad1b7cc39552926af961e02201eb994facf96ec6f0f627a70ed55e950cc78d13"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/Entry/CmdMain.vb"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"487fe367637a296efc87e964b12d0458ccd31dbe2eb3b91e5bc58eb7361f7a87"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2ba90c67c6b20777182c8bee8a0fcddfb160bfdcc17d995b26fcbaddfa7b7aa"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"8191b1e22b587d3ae6e730ea0cc5237deb54d1fa79db5ea9afa681e57610d0f0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f487baac0320bdeeaac70cd4e6cd5df05b256d0687b4fc233a82a209d5df510"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"81d089bb5bde402fbd2178c5feace2999019e0e4d73e0d992e32574ffc60d5ea"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7461c3692387d3101b8b3dec9f9432da77d420c086dfe2dcf18e89e04efea7a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd31c82c8f4eba8679dd9488824dc5c1235d6e408e290529b22ae929c96421bf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a6566b4b3299d29e1ef140fe946207edaab33f0d31511e5de3052f316804da8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"e52e59361a404cc8cd5b2f845100ecf87ed34a52dd439eaf3ddb5c426c7e9347"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"216ebe4653575dfcba89015e5b037a9af3947894a522ab888b905aa280e49225"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"a03f7ef0a236e566a15bf90970732889a5dd8d52156edddfa8200a53583b16e7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/Data/clsBuiltInParameterGroup.vb"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f8e39a4445256f1ea2d5ecca0e26e12a2fd9489fe64a07eab044757680d30c9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bbba382f3b5c2f39d4f86daeccd25b8df1f1e366c94f046efc97787e1401ee2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"25667e9dbfdc3d11371f5c6c846673366348cd24720682d24a31ee1d24ff79fd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"836899362c5cd12326c6a8822e272a7df156c7fe94526c679f32e6a4b8cced3b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f3e7cbdcae5e55d64e43a81acc3ada2b26dfb5b603e423d4657c351972fd427"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba90058a424b3f5247a82178028d119b6611a02509987955159a2122a9e01226"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"62acba0ed50efdc36cf4ad67e0be7d75d373580065926d7182b3d553f6a09032"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"29c5f364f272e94444bf148c0d33f10037367345e982be0e77b7e42a70faa82c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6c57409508c245218cbf255a08d6ac9032a47700f60d62757c8d5a34230bf0e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3db9898371a51522eea13759372263684d3ac3fa53b3236c02f52933a2163e0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"4908d88cb0e6a1de80508bf68fd47ea755673fcf2c9df52dc2685c571eeb6f47"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"093eeb8ef7e723eb46f83a7f7475c298653a1f9652c76a988976c246f035369e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"ade19086ec424f005e55154c457df3d4e8c7b31f3c30bb4dca2461d1e28c0a35"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"052417f5e9696f241bc9cf00adb9308233308ba76b64bc89a4c2687927506551"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"98ed2e6edb60ca0206019503a904a2cc28e53c5402c0bb343f69341317e6feab"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"e30f344b7feed4e7942447ddcf60d1010cb80abac5c7a479a4feeaf9ced69f55"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d60b43f5186323a54641da287036b9d597849c2a6713390c21ae881a13ec2a7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bd17d670b6847b6c98bdb17e33d06fd69afd838e63e4865700d3c10d55b8cb8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8113f9599ebb852e65b2b415010ae87bd907dd50662456d4a61b5a1433dbae4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"646ff50dfcde5ee2a2b15235b2c0b0a3f209e30e4d9378b6ea28c9d337e12c39"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"f68398625bb94e611f447253ec37807a39a4de59797f7a9a1cee36385ebdd6f2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"f50a51a234918215ef1464783d43ffe41e9eca7a3fa34ada3b24aac3f7bf01af"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"06d6231f6d0451e4e5bf76ea425cef6a91e8b47b4b16bfc1d871819e6c661748"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsViewType.vb"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"44315989ed0d4855ffec7c79fcfa3261486b563f3067e81eae34544b2620cd19"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsViewType.vb"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bef590246adceac6db1f402e94b6f03c19ed7c47d26b61cf62dc3dfe8becb17"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsViewType.vb"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"92f963c484d75e8dc54fa3a7b8a8e9de8001ef6c31e9656c83c0c1a8f7e19360"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsViews.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b0ee19cfb11646ec22f156e49c2231a92134f47ba263b897ecba4a3f120003d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"d269763a33f897b7fa51d2176f6dd8a7072da712e917ab6eba722a948e64bfdf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffc009f07eebcb84afc77c1baf89d6dda6bc8e6c51accbffe1c3632c118ef049"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"90a6f772a385e513dd5a2352495d777cc83b541513df5727872b5be66b75abbc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a812567a11dde8289e8287eed94c386bf73f2b96e36f689979c4c81fe4ce3c9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"d93b2745b4b493a4c4d1d828a3818add499af5c982e44e30acd42fc2528f53ec"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d5d6e15cf4ada83ebd59da8c0684e50276c7fb8fd85516e66cb0e5f9056f8c6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"30c0a4501cd733410a503299659ef1d2865c7c5c41f2c1acbabd1a20d2ca4d65"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"86e81d020caf583e7bbb40817def83a26b20a5cb15ff93ea5b46565a9b14e744"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"33e9c20415a5951929f8b39356579f289c28594f2cf54d1adfd14488f30eaf59"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e01d8fcf2bb0fb977023434834317bb4f14467a1a951c61a29198a205d03b91"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":335}}}],"partialFingerprints":{"codehealthFindingId/v1":"81be9afca48608cdd5e7919c10af422f863cdb27c7d78ce440c804d8cee125a4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7dbc46efc8283abe903bd3207888c3e46e08114b8cde3f3011deb0a88678480"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"9280c5326e52885e9a5e43c007c5ef754c29d1c0eb71db8856df172fe88af23b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"dda4b025f2d147453dabb6e59a729e2362329dd19f88ed0a5c745a337b9c2235"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"427c639bce6c00c6b32c2d783abeb209d7d94e1cd04c59f59c2e9098b711b18c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c1141301222a321c3446db0d3c503deb595761444af54de9d76b0da6bd56476"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"49beb581008a5766ae2364b465824e4df7fa794e7c4dd9c189827823780e312e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":502}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a87db68d322a482edd4bfd686fe9846db742fa5a6640c354d46d8388ea18794"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":523}}}],"partialFingerprints":{"codehealthFindingId/v1":"f03a8ff2d3d48edf74f00e5021fe41b02dd49fcd3aabf16369bb50dbe3fb122a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"de0282199ccfa9428c763e80f26b380e3bfa1c9909a651d4fec2ca89be41785d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":565}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce5bb1af324c093517d744921b5b22bebea862b8b1f7827098da0df0806308f8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":631}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4b5015d8d4f8b56272b7686e5ab16c392a3e459b15dc50f90f1ab053445e7a2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"548d952d0f757ceb13aeb0ab321a08ae558558774b7eceaebf0a9df07beeebf8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d07ed138b89f9b366cc87bdb77188f8ca01e7f0963b1a711f4822d3107568d1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":376}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3df43483b80e07b23a3eaa7e72a1520d0ed1419d3c62cc928ec40eab5eba206"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a19a8c7c194d09cfa04421cc314d5f6614610f562ccf5c4fea42949bb216743"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":397}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf231673d6ce28e1b075baab82b26db230badd06e22c1344e75ffddd9df11865"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":424}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b62a1d49f2a31ee81e1b77b558ac68cf2f2c739f1591d58c018df6e89500389"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"138eb2d5a18551ba43ce9129fd4a3825cd63e8218ac06efd0d0c1f2dbd919e93"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":458}}}],"partialFingerprints":{"codehealthFindingId/v1":"34b6a2781ca1c56af87357d5253897f445ef2c891516ebe4c30dbc74556181e7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e7f0796a4c281bce92e8ea5fa9fc2c21e189935346d4fe712f4b61b76e9adfa"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"39df0a1d9ae328d9192a66c70243155c49aebd2a99a1dba29223a912cb50d15c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":577}}}],"partialFingerprints":{"codehealthFindingId/v1":"58f582f704c57403a7726cc0ea1faef374981729c6521272beb84c5b542947aa"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":583}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1a674c0ae9d8c2ed8f4e1684cdb8ceded04b9d9f1a5c8cb8952c487be307e6e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":625}}}],"partialFingerprints":{"codehealthFindingId/v1":"50366deaef55231f53aacd39d9ec354db64f145b86f6622171dcbddd764f5e66"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":690}}}],"partialFingerprints":{"codehealthFindingId/v1":"26c7c97ba6aea2f039210c72f77774a1bf44ade0c526df6c92c3f4476809e0d4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":814}}}],"partialFingerprints":{"codehealthFindingId/v1":"2455fdb2536a6cbc7fe7c0b11ba8ad33189e709aa963da4a6f05c92a6bf191f9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":851}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e029414dff4ae2d8041e19d7a0aef7bfa44fa7fd0b57df54201f4fe7cf99989"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":1043}}}],"partialFingerprints":{"codehealthFindingId/v1":"19632d0c13e7bfd6733d3b724d5b40352cb4eea51dc353a95919702ea4d778a1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"58819d89a5ee11f309c8d03f5ed3977666f4e91db3663baea4e03fc1f88ffa9b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"80757c32c5d08d3aae5214672f514e543f39bc5799577445496af159e033afdd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"75774119fdb604260194a0ef8b8ee3c16036f239b8ff2afba36bac4eaede1c21"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"618a0c96d1261a7591e72cb00b382b4ad7f1f6194c4d678a804ef466a964ed2e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8f9646b60441e113a132e98e48afbd50c58f7a31435ba4a7230e0fc532230d0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"7267dfbdbdf06fc8b05399179aa0ce410b59562548a014edbe2b70f8eeb74ce7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"b23d12f51cd00d21a7e803d45a65f1d058b724574480e3a6cb3b82c8d187f7ad"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"c26823c05a1dd19539c85929758657d889a8ad867e6638b054fee905f5d3b8f9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategory.vb"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"4457a259f6261cd0c785745243dcd25a75bec4529412e3aec50721331b07c308"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b369d286e1268575202d4698d755e59a287236a32f6c3ed5023ae5254d97fa8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"23f1780c5d61dfaa039da5eb540a147d73bfa3cb526f93d7ea5cdb78fd019636"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8541a13b49dc3517a56747f59bb75cd912102db85ed1de01eb4d28cecf11fe1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"7deb3d34f96ce0c407376f0534fce9592aa84916af9dbbea635d98e5c9c8896a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e7fe9de140ebba1fd3cc1154ec3441882a1c70219baaddfb5589bc34d0e3e14"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"b331caa04e56ec1b03fc72cf516eb5e915a40e48431c25b28c5c153bdbeb1583"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f9c3fda47d07c140bc249f8d711efb529eb2f9fa83d0d356f3678f8ebf278b7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"8127a962a46704109be0ddcfd7516c67f319576f40dde0b5fd1f17d8767b36c5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"8aa82c4751fc108c70d06bd90f05ecd7697311a76eb7310b11f659ce966ecd1a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1f9d2b276bf7e9b367fb374ff3a62537c93698d45c41b4874a6849b4124aa42"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":475}}}],"partialFingerprints":{"codehealthFindingId/v1":"194f3541b715e32b5fcea336d0e2df925b730699cded5011dcdc6ac770155383"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":486}}}],"partialFingerprints":{"codehealthFindingId/v1":"01180c32e6e360aa7daa53df1844ebcea4d9a38e184b3cf5a587b625e1f8ff58"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9f16e20ab0b0deaa37f84b81c41cfd664b51f8b35bec4cb6f900d91d7f16390"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":525}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfba7e6fdfa843628b4e7cb0d29f6f6e7547b0fb42fd161e9b02ea025554efa5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":551}}}],"partialFingerprints":{"codehealthFindingId/v1":"81d25c5a91129709063d35be02df88b6b99122a704d65d7209fb7b9f319fff0d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"9737f74d4ca2ff58dda3c82f247f14993c9aaee0c9229b0c36a8c993e87ad0e3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":569}}}],"partialFingerprints":{"codehealthFindingId/v1":"9270f5310384f7d6012bde694466facfaf2f8317ea7b23c77e28414a54f64d55"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":602}}}],"partialFingerprints":{"codehealthFindingId/v1":"96dbb60a84df4927a2ea924fa29822cec3d18520d0c6731124e4cdaab4118995"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":607}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed2b48e2828792fd928cdddcb6b6218022790cbbe1b0c28303dd333bdee5a0e9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":647}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6a75668095b6cd89d57272fd9971ad1f45eb42b4b88b00bf51ad61133324fdb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":669}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ee8ecf43958b6a5cae8b9ae0180a986eb81fc17a344e133fa925cae34eef6b3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":698}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d54b5161b43e9b15443dfcf4421ba7096d17f7efe61cc95a838893eab8db983"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":708}}}],"partialFingerprints":{"codehealthFindingId/v1":"74f2995e4be1d5ccaa57a3139db2e75a11298de85eaffec10224567a9b219b02"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":716}}}],"partialFingerprints":{"codehealthFindingId/v1":"e55580feb65c8c9dd42afdc301aade3e6fbf708e9a6b651bfae68bfce1993d76"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":749}}}],"partialFingerprints":{"codehealthFindingId/v1":"3372e08081a9018c1407f1d5b923ed298bca25e9de962a416698689ccdbb7c77"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":754}}}],"partialFingerprints":{"codehealthFindingId/v1":"58180ea199ced9bffef519a68a9b38b57b4396f6f02c65474081f87be31da1cb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":806}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc8176ff732c6365267233405e856f5a156ae62dac24f6ecbb1eab8452cc99ff"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":825}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e9aa85dcbf539177e07db5c61a3e515b0ee0127138bbc551bf369cb3525a4bd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"d45612db70710f6603bd21103ba266cc14c2c2425e1ed98bccff9221147ec651"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"c263ffe0d1ff25be5e0e7071734968d44139d2fec15105084af9243fb3e55ae8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"03c88130ca85699bf7bf5a2106a4eb3236638800b1d8cdd007934f3aeac5fbd5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"68d5d9ffbab3f2a67d5ffec29b93932bcaf437b6fb2cb32cb2da54ba524ce846"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"c37e621d1e78a9a9edcf9990b0887888e3f45d77626741c9fd212259ef7d8527"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"35e0721770442f9e618665f19852880910d858eb8c216bad88916c806e3a132b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5eee2cfc7791129bd59a34337ad724cdcf55b44d635cd65ec313adc256659d8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9d34854d895c9c218fbe42d37e7b247dbf498db8a62925f87578730244eec37"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"fde63462cf6a4fa8a352799f6f765f10e536d424f5ba1830a2afcb1aff13c130"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca4d1a57b8b498a527c5cab6acdc4031e21b7cc7ae9951ab2457d272a04b51af"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"97edcc3cccb90a30d26fffa569e58083eedda77a8ceec164e9d3bfec9545050d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"af6a62ec59d9ccf1c6dc09a18f1637137d78273fe2407e2fe202412f3e4f0d6d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"20e8e7c0b3502a00ec91bc0b2d70e989a71eb525fe225428e9c0e55f876dd223"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e05526768f7ce184323c75efdc6aa6e898cc3a40f8c56588b990e54487e672f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"256da619576c301c9d69e1e7edbf44f633e4b1c9a382c0c631a19a7ac85124de"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"24eaf7647c258b0e7054c94bea37cd0f83085fc388443d08ac2dc4d11575b790"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"f938786b3d0ecfa2883c327568a73bcb63112fb961a9588e3df97d535af786f5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e0a62048e57db993e5a8cff49aa273d81c34b2d7f0d37bc9a67d9d785a8f326"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"279b14379d1862ad0b42d46836c98cac9d4dff8a133986b6ae3c57808893c7cf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"b45b14e0716568015b3c4a6feb5a0e481395f6e1d260f8737ac497eec1ec3646"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":407}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fcabc245bdd1ebc79907562318c1ea926b0d9ad516f8f3167e7dac38e0f4130"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":434}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc4977cc998a65fb685015a5910daaff60b294f7dc401315b5fd6a8ed7d97ff7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d7fb278c052ce03271901382d109957d75a8b2f2e31573786ef55737af2d7a1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":462}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8a54dc702c21811a8ff4de39baaceb0150ab2c78a7a65ac52cee61745c9b3e7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":526}}}],"partialFingerprints":{"codehealthFindingId/v1":"b116c9183f8986acb9bd7a3d5cab4660f8583d969c51fd16ae8d0d9f44aa4567"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c0b009034d8d5d2b6be1a11f22ac3539a7d9313b6689bcdebf44870a84a9537"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":612}}}],"partialFingerprints":{"codehealthFindingId/v1":"64df6df93193c6a528f9bc2e091f45d0743460ce2a59faf4e8bbbb9f22609bcd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":633}}}],"partialFingerprints":{"codehealthFindingId/v1":"4de4a1b92aa5f4dcb536c40ca4cf704df2ebbfd823722fbf38954a581f764da8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":654}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1ca44051bb004290f63134b1a2513f44b7519867775321749896b8db77098cf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":677}}}],"partialFingerprints":{"codehealthFindingId/v1":"38ad61693a62b6aa1395d15b5534061af117cd5dcb746260cfec2bc3cb2797bd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":721}}}],"partialFingerprints":{"codehealthFindingId/v1":"e05acfd9d195cbec3c8f27e5d5411fcfd7bb595e9eeca2556ae7898a7b025284"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":811}}}],"partialFingerprints":{"codehealthFindingId/v1":"947ca9096f1b5c8c9dc5b15fc1b65a6b400b04d8e6cacf4879f7faac2aea6485"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":879}}}],"partialFingerprints":{"codehealthFindingId/v1":"73aa22299a4bd51fec149da29d7e42fdb85c83b0a7f6a90e1667ee490dc6b91b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":899}}}],"partialFingerprints":{"codehealthFindingId/v1":"96d3bf3a043810f016c9dcc1c63aafb3e38bb3304c2515dc63035c45cd58980c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"e136e9c92c457631d933c6e7859ea413a2ff09e1bbdb8785d0ee126ad9583654"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"070183e045ee371d115b2cdb8746f9e2e7736af5915ebe80741c774312ff5523"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"f20f5833428ff79f0ebe922a776239b0bb239dc9924a68e504558dbd801d570f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"28486cb95cf88bb613445b4028a72a81ca3831b7aac1f37a190643f67ecfb7ea"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"81f694b5801395d99d005ce292ce30a3fd4824d95be373b77dfe277392bf33ca"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"75c4435c72742ad5a954ca2bfae613b65dd426529b09cec772c80f571623b1ec"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d0b1208c15b485049d0eb1db7789e5a225f6648f043cc45d1f08ea7288e7a14"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"a75e4d8b71d6c46dd9c1d570dd2e35096439581bdb821ea49137352221ab6b1c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee14961a9984650e32869e6db13819cf5fe851e7f76521a838d1db344236731c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"40e80e431c8ec2201d9ff738fcd8d4bb602689de6a502501bb24bd54052f3b3b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"36c9525f3c389141c0d7db42be8033b4cf153c955a93f893e166bd2501aab3fe"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7eb3426ff93604abd296f4c1b9b3919b8f8fa44790cebb2cea6fd85c18cc08e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b37b4a50119fb1c77550ed7f4ccee04c070e0bf67c761fb8f1bd05de843bae6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":356}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b321edd1704b9954401efa3686a29b22e01783a074d801b010e07a2a2707ecb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":359}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bfcb36b5e925f2d926226e3a7c068062f361850a4d2badfbd08ec7ccbc98ad2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec4ac3ed7ac1c39a8b37b0f43f0eb8617635eb77190bc38a904fc121f30610ae"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"d820f24bf29acdbd116fa3c1fddb6bd2a7124d0ebda40fedd61b321f0e51deb8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":496}}}],"partialFingerprints":{"codehealthFindingId/v1":"20a2534cc94805202f6dd2df7e86bde8d9ffe5ed5037aeed262087bc8e167ea0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"149216493a09496cf2a0848f464ecd8b7d411352d2871112a405dcd3afac3ea9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":620}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc87ded577cbce9d47c448fce5ff13e73608239a58199ca180e922f21f32c92f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":627}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e5830d6111af078d9e84171c538514929fa96764dffb60d9006df5b73810c08"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":691}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca03004a46dfe77c9e7fae391bbdb0f04ec71f98ce33cc23c8a1535a71336079"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"081ef84ced4ecafab343d2e17e70e28a74c54715d467497844bc018c307b6e72"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"521e7baa5ddc616ca007d42511a6e7c6003e2ede811d3c790cfe65b2e2d5c80c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"f62ea3ad9500b6831b39f13c0a0e8552e83cbe4bc4309d7959d91a1a9ca71bad"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"b35dd8b2027fb5e4530fd293d92e56a5354b03e6ce04307978041d75f304cb57"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d5d7bdabc0e02a0faf1c7ab7e50917c3f1b60a4bc407614b0c2d7c9fa71ab1e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"5376a2a76d1402418db23375fd272a7d110005f97737de6161d0f3be85ec1e95"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"19f89cf230422c09170f2675b561966f73d521b1191130acfef97c77d95ec73b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3f29c23970c42f8cb105f18f5a67b7720a37e08862cb425faf025007d09c458"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d81fed93bd587fb642b7ab23ebe8654f1a1754bf1b47afc93f5c41505824abc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Progress.vb"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"973636fe22bf5d1fba5c9249cacf07c58d81d4af5e1782b8f15ab023bce75626"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Progress.vb"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"22c3e15ad2bddbe5fbdfc4308424a732747bc8cd79e36b296a57e158ddfb2baa"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Progress.vb"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4f813d2f9a656387a3f0e666ea95f9aeabc90cfd0c070a7d0756625a329682f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_SmartSync.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d2a97b69ee761b5e5600bca5b0258aaf3efd95fdcc52a9447649dd0b650d8ee"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_SmartSync.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b188470b2261fab95f0c095eca4bc23d9738012d1d37ce4b7b560ae857410de"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"14c6d7cfbde18116f6320eae58a9a43d18949cc1ce9b4b3f4d01e311e606d425"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"83df96f499528dd579ff5be4e80101398727792ca467bf8f2cc98f089fa30746"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e98ac9228a71141cb298d81fdd2c196ff4d9fb20e1b6463b1b51cbc6282c2bf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":341}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc7ed920a6aeccc542f2a8d4293ebef93db14fda4c32af98c983bec8bf9b6d4b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c5f1649b7165e371e9a356619f02f7a06b704c1669556d13b337cd249a74327"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"524db4d62571d09d4b6ae9c5d780d725c0b338c8e928425681bfcb00d4acc0a1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"a46f133ee0e7ab2bb4f9ea09effc7c03ce9f5cdb6b413668dfd1b3dae45dce8a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":395}}}],"partialFingerprints":{"codehealthFindingId/v1":"65a9ed37e594585d3a9982bee88560280ac0d45872cea359b8b3d2e1ac405038"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"e05dd637d7cb2e7acf29958780bc01f37a170f61c10bd855aed1a013d4589476"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":475}}}],"partialFingerprints":{"codehealthFindingId/v1":"a064b6d1fb1b318e7e1840105e5a0b66c732b5f79cb60ad3814f180bd84b6206"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":512}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c990c80f88257eda91d886f13d9d34a2bb1a89affd11dfc9841897a85253688"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"196a9fd7366d5ade9770dfeca7f56a92c8edecba594cd53c741baa44f6c33c01"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":558}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fa36e116a72716e55e3792994c53147ce05d28f0f5846c6e59aa247bf18bc11"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":572}}}],"partialFingerprints":{"codehealthFindingId/v1":"de362036182d22427e55fc7e90259e151163c0c4e50a517976e61b01bf6dd366"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":635}}}],"partialFingerprints":{"codehealthFindingId/v1":"03e767fd79851757fcc5362635c8571dc90b4c80e5e2acb30e9260f767567646"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":712}}}],"partialFingerprints":{"codehealthFindingId/v1":"a56ae9ca06719fe8fcd20aeb583208a37d934840e5cd13a832f3745b09c1ebfc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":798}}}],"partialFingerprints":{"codehealthFindingId/v1":"dce00b8486eebf61bdd5cf3eed203fc1973a70cfe1c87a1f9c5f26173a6453e4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":821}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1137ba7f60dbc68c5c773b34a1aa6a36f453fe97bed7e69a17978eba54e29d1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":837}}}],"partialFingerprints":{"codehealthFindingId/v1":"60f679de35199238cfcdfee98c573000ac0496099362201f5155d57f317e76cc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":840}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d5a5bf2a4edea980ec5bded557bcf3c58526203265d1422b72b0a83ead10800"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":855}}}],"partialFingerprints":{"codehealthFindingId/v1":"95047f257b63db6dc06708b182a1075de366e03877595ad664b0c87e8c624180"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":858}}}],"partialFingerprints":{"codehealthFindingId/v1":"70f7ce20b243dd2a95f1a184141d38172246dff29078949c98e60e420ca019ef"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":873}}}],"partialFingerprints":{"codehealthFindingId/v1":"366fcbdc277315e23a3d8d6b1181f8cd7b18f9787a6f77a7f92fdbeff323cbb2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":876}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e952f3e501b932504f243b73ada2e1ce1f2298644bd97e69c533e5870b0e728"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":891}}}],"partialFingerprints":{"codehealthFindingId/v1":"71c39ce18d241aec0f79f32b9a0156a535e3e9693735ac636bdd11d98560dfeb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":894}}}],"partialFingerprints":{"codehealthFindingId/v1":"e317d5efe49ef93c7f16396bf91732ebd03328606147b9e34c3aadb7214cb5fc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":909}}}],"partialFingerprints":{"codehealthFindingId/v1":"850fa7ca60b1c67eee98347e30e13f0a69f71e4ed905381e2336c6344765b41d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":912}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a95ea2d3675cb8c7a188dab8da0a8c9b058694418e84f6017763f79b5bcf7b6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":927}}}],"partialFingerprints":{"codehealthFindingId/v1":"07ed220af0a4358f38cc684c09a3df02a26d622e5feb2b7b700e571a8baab17c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":930}}}],"partialFingerprints":{"codehealthFindingId/v1":"98fd4aa90b9a9d6c5c2ca337aeedb0cfdd3cc11d6e37eec35c2ea92c4f644887"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":968}}}],"partialFingerprints":{"codehealthFindingId/v1":"59b63ea10f3828d244843cca5a83149eec7a1b4cde15c27c28dc821cb1f241c3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":988}}}],"partialFingerprints":{"codehealthFindingId/v1":"245899a67c70342b451cd96ef1c5bcfa9caddcc6b0428a6e2fc9f5c19aeeb2f3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":1015}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3c4c9b4d078086bf685145679940f5c13b2deb21e6f77c41d741e48146f66e3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.KeyMatcher/Data/clsSettings.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"13d17142eb9bfad7ea3a82853d35ae91a02f29afd6470054bf319f27db20822c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.KeyMatcher/Data/clsSettings.cs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"757ceae73b1f944298475a32b1d3af1213ae37c72abe81b9b8b3b13c5ae301ee"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a2b8fde690455dcdc6b4c31ec68b8822733d64d9ea9da3785eb4cf40fc893fc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"19a0abdc2eb2451edb918d824ec5a9c2a8371fa75b89f2516961eec085ce6ec4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"bef54faf06dcf12d7021246bc45ea40e6bcbbba8c62c2d5bdbc7b02c365f2be6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b373a13a28a820662c0c3f9d4fabb1a6879af7d8a574af913bdd7c0141a9f9e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsPara.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"58217a38ccfd5c9e7380e359bce2f34ddfd876ae0ef4bb9aea4b20483881a9d2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"90123f6dc5f44ab2c4f390109b2eeb08db32edada025b56fac98a270278fc5ac"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dd01f26deab82c3db9d24f236cc15b77d09cd8c293894b334453fab8a9b9683"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"e194da3a235b2dcb9ed7a198e25623a82d2bb27c242f29705d2fe333068eb49f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"4192644a9247f9e3ea5ddb0a312d9bcbb5387647640ae1457264327c72c34b5a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"59d383813317db9d12ad9dc238464a8ea2dc6366a6edfac9b365efe03a912447"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"8542d6c03435da3429aac720e540c8611095f362a7d414c84e42512514db2786"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"32e3ba4492a3d69bf23ac14c47974bab3816612a45148fbf6d53caf52a8017c3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"020ef3b72e536fbac113fa8f5eeceb811442017d534c47c260fa575d98a1d94e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"5767e1340f2af6ba39b9ad914e12a49fbadaf44436562d6cf58cd4b1d0c83706"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef398df52d28b59e2e2a86b57eb93aaab8b641a945a225b75d3e8d5480ad8400"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f7a1a3790dab7dd17e230229328503bd2208e0540f1e3a7656c61b78032d34f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"b13ab88fcb4e1b450a6d539447b6f1bb97e09ae31ffcfcee7246c0b0b59b59a4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fd23afbcc8ae0da3ed01a9adbe0765f9713e5849eb6a08df97bfbabc89a1c9b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"76cb3c2317b942321e7eea8af4bc4ba476416da30c2b5f629511567b8ceaa32c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"415e94dec34dd594be77de320c9b43bf75dd98f8daf87475a1c4dda6e242f153"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebe4b99a00ccf099de7b24126779d1c6ec80285057bd7269f7d11605ba86e741"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fb9c0ac0452b53fafb9d1fe39ea59c7895d494efd45dfb4b867a0feefdd8f70"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b93dcc53b055d3b7b415a03b6d0e9381599ef01b68a9e31415d3134a91584a6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ba2eb57717108ee288af314e0f7d8dbe0348de7e453ad6fe3310a2ae02a6444"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"2941b908c8619d7d2e873e9bd7ea3cc42152ad8f51a896ddcc950f39205429e8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"b191f82fd06d0783d57e559ab66281c1ff2957e493d61fb8efb897e6003ebded"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d79f3d19ddbe95296c66829a995a7db399e5e774846e98d557e959770285bb0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a9adbe798997bb6d5b11b017171c491f17aea60760c1a57c40f21a77c4cf828"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"411a9b363712043ff4bc7689c5eb7f9000347b7fa24c267a55456a234f7d4c50"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb"},"region":{"startLine":416}}}],"partialFingerprints":{"codehealthFindingId/v1":"15b196389cb5488730e40dc27bb0f07befe0d876830bbf97ffd08531731540b5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSettings.vb"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"79f72cccb5f1875c7662ca4409819c29507fb2cdcd1ab2314eb6982378f055ac"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSettings.vb"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d00ff38b288760446c4aa0f247c97724bd3082fc5ce34fcf1e5c7b2657df10f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSettings.vb"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bc76bd9e88ad772388b83e9c0a1bee8c2335ad86631d191d6669f9c63cfb514"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSettings.vb"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e036e4cd751cd536172d276a1abca96340d5490fd67baccd971f1185645c798"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSettings.vb"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"933a55c31e2f4ca79d3503d4d161bd37ed78e976e226385214cd7a3ee8ec1703"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a905c7a5b57b4b0dbc5528b086da9ed80514ccf3a46d54196167f4e447c300e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e03d773ac23a0ef538c91786252b9641efbccde6bd66d697f12ca2a414f66e9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"108aad323c36863a8e2fa96299288e62adbe8fdfd9e79dff6bf384db41f006a0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"039e69492caea0dcb881c71dd837cbe893886245877d0e8056d4c47ace78f2ad"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"84a2d0475ebd00df0d192e59982490320206d4d10c8db2e47d47756d806bc110"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"7625e7d733d841cb22230c08ef3a2610fb722203681d5e3074339a776a7289ca"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"16aa6c83a6735594d428f7ac4e03d3012e028f01ba4d254bf3d05a6f20b6c708"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"12663ff5eff90af81f305bbbdaa878e50d9e3949a46b7137c78e5ec65bc7eb4f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"662f064049a95832f1ab7f062ef653b5a2bbd94afab97f94c9ebbbd648065bd8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"96bf050671e2e102ce696f324b4648a3a3a6a124df4abcf8387f8cb8c79125ee"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3ea253163e538c309f7af13ee12490bb00b5ce12de0b48d5afe033c60cd0ea4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f7c77b807adc9c8b8ecea610373d9c399ed543c3133a58431ec1f8f99c72d3a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":440}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcb8a038698364b3e4e4f13792281c91c598ffb2b386bf96da1cf90e977f78fc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"0843b4f16fee26b232d7ca8682c375de9987379711b5f3cb515525e7a2a80529"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":493}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdd5333176c064ec3a73c02c3e07b4d1b444814035390c9e4a5e7c60bec2d437"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"23a60ed37c1d767864b47e263067bd55e9a47ecdd02d2cb90d57e82af1cfd43a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsPara.vb"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f8c4323a34f8836d31dd485481dfdd660340c461bb45d3e2d4aa689fe6f11d5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsPara.vb"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5f4b2867eb595ced66d8f8fe77b8b50d4ba41fa41b23efc30feac0d2c0c8204"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"e87562b388b06185b09ca652aa92736526925832b689f52f39ae9dc96e250d95"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"db2837ef4b8c30c24f9a33365492eeaf5b49001f62cfd239bc13ec5477439c1c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f429840511b762516dcf12444c21a272b9ef1ca55e4798fff11f6854b88e2de"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cb828b322984592ec09ac7aed6ebde5484b6c2568a97297599af64e49cf98b5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9f8edc9858b3858ba8dfa3f967cffa00f6f28193a568ce9bd7e0c0813858738"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab9594d636c789cb035ab8be147f4c9ae913f8cf4f976b119c100a3eac87b2d5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"90c1c6ac1e1a3ceeaf52034dd71c116e3d328f29835aeaf4626ada14c2cf2ff8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e04e605aacfb673b9322c5e1000dbe102db521e5e4ff04e9a157ad40b22aee0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffa83627d848b06ada4e63dc01e8506927bf72f4825168f244c8b22bb1a209ce"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae715ffbe256bded3e7fe91b794841756c178e46dcbac75f7dc2ce8de639db9b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"437b3e4ca874bb7f67fc30866fc4bb01ba675d7e6fc596226a71a4c8ec472096"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef31c9e0a48090c530fac88d12bebac58f3dbe26af5a59fe6775bb1c810fcdab"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":448}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fc626d6f14528d805eb166773b4fd6b85aca63c8ff14f4e9172981c85481d9b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":456}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b3aebfc0105ff8605298ff1a05afa770c2f08f2a1a27b8c2825f43150eb3b0f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":495}}}],"partialFingerprints":{"codehealthFindingId/v1":"1dac075019b1c59adf481b1a958e5447f255a55e0d2784d833983382ff36b794"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"330fc6fd97e1f451d81068e23e9e6a259f03653f6c81d651503918861db17f87"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":553}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b05188435bb1fdaf5af798baa09314f0a92ff220c5df9f1a02a6037241cfd0c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":583}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3a3e95da02b4b62bd010957b8e45a5e504ebc3f587885f5d642b99d7fe28f85"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":606}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4106a73de15d5aa36a765bc120ae2cb05f5f27688c92da0bc2e1ab4f7cbd685"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e3c0ceb8f3807b85affcc97474b3c2b765aedfc80c26a43299376e33c03594b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"18467730e339b3c4f57e5bc77d6dd978261e89a5b5547855d6c3f57841ec0f0a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"481591df554c325137c009175dc5093ac78ade09e63804b6c4e8d3029eac2b77"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"7188254ecdd440edea394e15abfc3c999eb297ab93cb1c6459212322dfee551a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f541478e0d751be8f7e27a98bec72d8ea218429e6f685f1921f7aefd026e506"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"b736aeb23934c651afc0ac19e85a33582597e5d3810adaf0ea18eca46c997f61"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4f87a69d049f458888f3626efe66a45f264b38d8525ab9a011bfedc1b6ea2d9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"8791c2fcab2bb2bb9baaaa4f385812c886f2720d7c16f1bd2881efabbc6a2fae"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"e66b2e1d0d1072fe840f47d9ae9fc2cb85187a51a28364235d30cdc3a310e6bc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e9ffd724604ecb61c40623740ec58283adc8e569168e794c74817602936a364"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":396}}}],"partialFingerprints":{"codehealthFindingId/v1":"040f41f0449519363908c85686b639edb1fe2b2baca5d931d67ebe6bc470bc15"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":431}}}],"partialFingerprints":{"codehealthFindingId/v1":"6397fee98f065f58a021fde321f1cc41ce3a3a48831538f05cc6365fc5d02d74"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":444}}}],"partialFingerprints":{"codehealthFindingId/v1":"94753e4b3a37470bbb25a7d25108fda58106d67e98f31609a6ea23eb19d38b72"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":473}}}],"partialFingerprints":{"codehealthFindingId/v1":"d31ac78755d2810ab2a8bcb6e1b8a52e3a023f5c5324c70629d0e24cd8ae6537"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":512}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6d3a572cb8174c2a607749b35f1b666cfb1d2fc406ed819da9476e813ec9aa0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":611}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9200060ce278d51e836bc03f1c09c2f6188e7c1333369004b45202e46136c3a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":619}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b62bdb1eada16d1896791b62b5482f3b84752c0d5a9711dc18c0f1e60562c32"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsBuiltInParameterGroup.vb"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"406a06b4cb1f1f16e7289086b36ac1a510f1f4420d4466220fe9502933b0cda8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSettings.vb"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6403b9fa45bb016be369627ecd3e659b433b4b21d6d165e29840f63ae1290ab"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSettings.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbfd19adf0481dfda3d72005f4f8fc3dce54bc671dc2ac64c5cf15c422cad81a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSettings.vb"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"e20a17e51670a38939436d429d1a441142dcf237aff688e72528ddfde1b6265a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"954db2d90eda0648ffde109326f76a4a28879499f993ca0998535e9d376b9de2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ab6d3a31df407b510785b5f8d682db672081a5bbbebc5003e20aa9cd3bfefa9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"3128e0e46000d185010c359a1db79c7aff1cc48c15318e9efda0a5c163a4c4ee"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"a054494c41b26bd9e765daaae0658221014ac6b83c9ff327dd344faad7ff6a08"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"3201dd90b8f85f53fb3c50f3b8c918fdc25a3348421f79bb58ea912e71bfde2b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"c87e98adc5a2120cdaf4fa6c03e07789ad37af06e740b966a6645d6778aded95"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba329baddad2420254b5490309e395a0630a907fa3b3cfffed0b6c11a1ce7e6b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"4077b4365e03d416ad3117f93272da532d5e03aeb189435ba32941a3870c1e8d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6476689eceabdf4104294ad80b54de0744a33856e3be2a6a2b9e1ade95fd907"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"03f73899ccb084c7e7d117d45539cb7dea67ffc42fafa8d66097872c6fff57d9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f21a22e8d23062cf5b0ba759c6932625673738710787c872f3bf94c0b9967bb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"7088787c32afdf6cf6f101fe46245c1c956573a697475242f4626131d7f9dcbb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Progress.vb"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c9887fabf93ea6100e63f6f00ec62baa317f5c3b65cf7a8bfd2c8251a8a259b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc1693c8f27312b13ad6039e3d8c433511d7d75c2a98bc09b8fb7b24b2100705"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ea3fb8fccc16032ae41c83089fabbe8e3a887d8ea7a2d8ceea75c7ff651575a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"2493ee8901032a53374630190df57b0c9801609b313df6403254f1c24a80af09"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"b654d8ce4d5da0a6ac39952f27e9cfd2a6eaf3fa18d3632012e1468ed2af8674"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"86fb8e0c383cbcde73aee5ba81b92782937bf8a07c9dca51efcac5099e9130dd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cbd41604260d126b3fa7d88a8eb7df581fc97299e33af4fb7bbbef65d01b80b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"19a14787bdbd6a78f69415f648f8ae89c2644a8a79faa4524c0b42a933592a60"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a5d63c689150ef32719a678413363d7a675e8736e889ee18a74a7d5fa779f3f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"25277cea0c9f2b5efe48fb6bb0204891cdf8d53c7e62035f350eb300d82a4110"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fef58cae6e57414901d245c3402aa598e8ec9b2cb85dc5bb9ff3810a988ff77"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c90b804b6ec31c3e8cfcd9918f4d05cfa9c84a5b790f658a3a21bd3014af494"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"65fe463495be1c44f615cccf4b7b3aceafcdd8e7d64b45fa35ea1def9a308831"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"41c21e9043cffafdb22395bc2f03cd68f29f240e4010497b9946a0f45c747723"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsView.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"a60f3c0f98079fbd1fbf03e3e1002a852228f0e2bd8a43c462134f846d27fcb6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"1526fa597145f6a48f7c468554fce704f859f43a7cbbd0b1236363af89829c63"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"60fce013dd8b30e115cad7f2fbac5a13526ff893a48b027ae9fad857c467e26e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"4295dbb8ca5d8c6a9047b1102eb88a0b2a4005385bd821d55377c44c2bbbebcd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"3261c995acbdf57d12544508849e31e95de564bba10fbb2d7f9e796c970edce3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":333}}}],"partialFingerprints":{"codehealthFindingId/v1":"e104d310be965e4bf623049d8a6b302128279d3553f82031cc244b53c0021de7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"b809213cbee179d9279f98b354db22e360d8033db77aefd3c5b568dbe95a5628"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"e684c46359aef1054e5c594e62c6a461e66dbf1edfa8015048a21f3fff67027b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":420}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb474cec85612276b6e78a57815e450abe9129064fee9c58d2357c4d04bd1b11"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":427}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf75286b203cf1b7035190d7a05f911eb572bc3b1acea77dfae9d4393ce1f224"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":434}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5645a10d70f80f3cd8a505a2d3f731f1d6ed3737cc4ce978d3fbb98ae1e4100"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"9aadef8f2062e04a5df2d0085df150be852b0cb4ba9508d46d304dc6f8f9cc1c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":497}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4a6eceb144f4b86ccd539299826ba9ce792f58b096dec1c6da021eb80c80083"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":523}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa632280d4bee44b0d58830cbde88f1c9c2919420b2bf4a066bfff052cc93ec3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"dff0b37a0a3a721a5840f4284a094c78cb29e6157ad6d0792e988c454db578b7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":628}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e2fd1e56a7604a8e8dc21361b8250443b17b6b7743a4249406d110de45610ac"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":684}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb4303ff742bf40ce4577b99f7e061471f84b561652d3bfaf3b38219d2a3b2bc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":699}}}],"partialFingerprints":{"codehealthFindingId/v1":"4224ba81272892d0b9c3d907c73b832012b4f1c2ba5a1eaead89f1f39789a7f3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":714}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdbef2d3cb9bed862091b219f7a80b37f9e749e7dd027327f1f708263605f697"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":729}}}],"partialFingerprints":{"codehealthFindingId/v1":"38fa46338b68774738bd99e8b670bb21a67687e987e44d6414d78143105e8e75"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":737}}}],"partialFingerprints":{"codehealthFindingId/v1":"3622829c798d229da0501048ca2400470ffef35b330a118b1fae4932c0321191"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":744}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c94cceeb27e4c67fe048dd4b4da02336181bb09472f55dc5ff22187cf12a6e5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":751}}}],"partialFingerprints":{"codehealthFindingId/v1":"859c1c1647c6db28efd8b618557ad2497a0d181010ac9e68843e763660648ee8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":758}}}],"partialFingerprints":{"codehealthFindingId/v1":"28c6b616e1f05abd4d66f3276f946966b86c3aba6b393d3b3f96919f58e4ec65"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":765}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f5a2250b7ffeb463a401b18282e742315b92cc76b481c377ed944002df23217"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":772}}}],"partialFingerprints":{"codehealthFindingId/v1":"382d4ef3971ef7d361f63b9c2e715f3b42f28502fab46da5db44a453a0bef42b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":779}}}],"partialFingerprints":{"codehealthFindingId/v1":"79a8bc139732df041eecead78d99c7b1ca2f5b00f5d742c0903fd0ebcfafe12c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":783}}}],"partialFingerprints":{"codehealthFindingId/v1":"a255f92c207199fb1275d6b0243d321f65eb96546ea01cb49c5609c1143fa3b3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"05114c8f60db499240f1b320dd737d5536ef9b27522ece9f81e3cf5d4cc91d9e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8274c5fc9661298f6925eae2bdff16b27a6a9d7efb67a5b7320b38ffe42cf30"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"107a504bda8a97bf37ca0659d61d891bcb4d269d434992a93fd26f84011d2120"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4d5c9c011a1960294e3f84826a1b613509d4bf2c330a51f3d666166e464ede0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfebca7db226410b83f15ace0406d8efe2ca540a02c6a733f26996c78880407b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6f0ba4aed80094e9eec3cc75ca1d12785545996d51dee962436ce4e9f58e83c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":423}}}],"partialFingerprints":{"codehealthFindingId/v1":"da444d378917540cf2c36ff0dd74644eb4d7708e87de62ed2778589c746cba51"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":448}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ebb0a5149ebf2f43a7d6f3a13f248d1c34c806241d25a361f3fc9168ed44b87"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":494}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae6a8d444c85afa45115fae761728ae42670d6e00a983d177da88c2330860c45"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":536}}}],"partialFingerprints":{"codehealthFindingId/v1":"d43d2640c26712ea520d211ad1eae9e89c62e7b691bb4ee27fb685d42f7bf26a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsFam.vb"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"255fc45e955a86017f131fb12cf38b0612fa831cd0575853af84385c208373a5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsFam.vb"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"501a7a5d24bba9149c477e0f2dda1325ab8bbd4b3b32149003b1b7b37cce1473"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"916b727197f43d4283dd552b9b3d5b380d82b18c7cf36ef5b1349690ca074a4e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2842c2826cbb807bc293448127d572149e09d0a6dff0be5f3cb2a3c9e762aed"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"1665f16f9e2ad84379be3579d978d0bf5f772a8956f1b9a0d0623bd6a8d35c35"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1f51b7285ec0075209d77026db69e56988ccda57d85a8593a5a325a199140f1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"634094de0e80587a66ee412c2e4b7db075f27587e27619d1ba5afd8e51c1c372"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d19c5f23e998b16d4ffcea0869d81275d452f4000c4d0b695c2abfc78e4073e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8de22f3938a7e701ef9ec5fe96a4a3dd87d461b87052ead3e874c4e351d9db6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":419}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab46869a5a4ac5d614048ce570140b638dadf0e0464c469f272d46e9077f8185"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc10a3f0c089b821a609f3320dcf1bc3e8860bc6bc6416b8f4c7173bceaeee49"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":476}}}],"partialFingerprints":{"codehealthFindingId/v1":"205934bfccff5b072d8604e502138be0232f161cf8a0b782033027b4532479c0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":487}}}],"partialFingerprints":{"codehealthFindingId/v1":"faf5de0564d9587e351725cf19234b55edbbeb47a832d4558311144da06775cc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":499}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc4c5cd0f14d0edefeb59d6f54b10a7239542779718516e5beda4565263d7da9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"468555ea7c7788d5fef62cb8e7a65d31d67043ab2e348bd5bfb423ef12e7d7b6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a6d1bcc357c6b8886974455224e4605dc8a1d82d9c8b8a2675dbed917ed175e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":587}}}],"partialFingerprints":{"codehealthFindingId/v1":"9799a2a760c671b626e5d5a9c7145faaeea87e41499a8d62a2d3fedd0fee6c74"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":629}}}],"partialFingerprints":{"codehealthFindingId/v1":"94232634db1bc068310a869aff45e367850a7b026ce2dfe9895c32267614abf9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParam.vb"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ecb65255ea7298f1ce86c85e81e5f33e39f114e1310828d841b6049ef89f16d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fa6236cb2ec2e58706a51a1ebdb0cb8abf08370457c6b6a34582f6159e4011f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b4b8bfc0a0fe2988e983f4b80edd25ba5048f642509438312b6af33212739f2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"de3758b13223d95918e8badc4addc10051cbd62d44c806720a7631143f93b8b4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"98252a40f76da57e590eb11e0d3380cdaa568db1aa012c6295af92d49d4e5fad"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1f73b9353b22024e102de71844f36c550a0c75251b871c70bb4717aa9679ce5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"3176600869997104321cd8e013aeaced6b0bb8f99beac5c147e3374c7ab80d43"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc2ebe5fbff3bc9437b3308f95ce72348f7d74186243d64a3ad491350d757b50"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcd05e56aa3edc721bb6ea6124439083e160149a60a150a77617c7759a845d11"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"d61c3b1b1336db501e5858653966668a881754b9315146b847f1ce242ca47a99"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"60d969f04303b707ea9f90c4c0de6e8bdd3d4d35ba9b3757a80bc9355311389a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"04046297d592d9911741b7355c81bd2ff9d04b4bc36748f1dc9abf72f1395a2b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"af1746848f9feafd088551e6710156ffd180480d56d59228fd53f8f3010ac180"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ecde6fd38ca4637fc2bc920c9973823ee65337c1e1fd0b1529fad2bd3321111"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"465c9b06b2285a6abdbb0d4fdbcc7df4c3b24bd6613090a0feb1c9e6a62bc7a5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"49eb120e9881bd033692f6f7e6a74eb36bcb31c412544ccdab053116c1437dee"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ac3f6a924118e7bb05f3e2214a52267e419f359861e8f94cc1805d8c4c7371c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"8dd2be1969c5a50d51f166d8ad920d57eceff3e5f09733909463d61796e5af32"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"2065070dc648cbb787089d748af3256b466c056b6f5f36097e99d230bde1b516"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8251d68e2b4b3743226c05ef95e511a8d12ec1812ca0a8a72a2fbe45466fe16"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fcbae57c031fab84e17b51ff6fc7e746666a4eaa74a412bef7698e7a343b0a8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a84fe072a908ee5cb3271e4a2fb0d687de9614ad2904b287ee3de75b3b56d9e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcb9cb5d34358bb2e131fece776f6b165dd66276524a41932cc92d41e7701035"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"30e3ea8cada841f510993fc2c32798ba0ca66738c8bf1aac32f6ce5a08dd96b5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"407075340c4cb4d4bd656fceac6d54a4add50a4f573416cbded4a95916f5ed80"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"99c113240eee42832fe027e9d49c37bcc920b19781b57d43e7885e6ede4db086"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"14b2a6579fad7035200f412f6545e44b6812ac09d256f692dfafca750384348b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4b177b1bd9805f77e7c17837c1f6eba2022d2c93395254125574f2a7081e223"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"95fccd8dcac65a7bf4496db3992ce215f69f1713e27458943e1003443ece4caa"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d9d96d7f7e8f50f8a0753994af4ed8204bb98a7d93da3d53975b89dac6caa9f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"784ed55eaec5ba2bc1cc0e33736b47bb6bb8f5db886c6a422a91eaa4a94d2db2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"e74ec0d47f251c642e313777380a1d782d52bb9254546baf02a3fcd5e2f3a1a0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c3acd94279188126c2310cac3cbcfd0ca42ac46638ef563baad8cc17a39a735"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"db1e358c18cb2eee08d0a92981c0699af335dfb6b9afc6051945677268801a5a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"7062da9f07b2236698acb26cd0888c0a5d783c6c47c6c0f677f0c5974737fcfb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"711140cf614a7212860e4dae942378ec94fb74ae6a41ce4ce7df89ed215e3441"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"0642a9b8e8b2dfb235f2ba389f4d1d3aa96218cc96f854e723a354e9ca0a9064"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"54f53a3a482f05cd18c67e2b9ec3afd6504a909f2cd610f1c4af6c10d4846f94"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bcda03a85c0830ba9d3f3b6b78dc38ef75640b32af466b2d4f782f6aa3af577"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1025a3daea2dc10a588e43e020577c763271459b99526c4cf00cd97cca59568"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"54be232c6df09eba1344f2a8fadbf3341c4c36a0c5abf0ae4971dbef7aed5bd0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"36a06c18db1d86defdc81a6f0ef500a16456d70dd57a66cd7c362e370b4290d5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c9ee63d45cc096046dfd79bb673f2f6bca6905c9f427f0a2bc12b55508702fb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"26ae5236ee4bc0ea6516e1f066321de0bf97c78d3cd4ff731c7f8b4c61bf476c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"8513c09f1e743793cd61e907adcce4e3ced2f019232c9ae346c55c4ece2e6a84"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2514.vb"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff0093e0ee8a09e6f97209232151b57b9ce64bd1c688b4971a2067a086a8a10b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2514.vb"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"1396c9e476238022bfe33a5a87651bf5d11460585b58878457be0d4fe5697dd1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_AddFamily.vb"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"78e7a1915470fddb0bc65ce0165404cbd893bd3449e3f8e97a9c89cfee5702e9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_AddFamily.vb"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"9599039882897b47daebc3d96dc4653cf8f07cc560eee2fef3d343ecd8f1677b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d79b9df111c9954102d17de945aae97756cd3191e5ee228952ffd1ed2e5fe05"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9ac5e532c17c729a8a8272ce39dc868b51bb802fa089b9a23ac6fc6236d4586"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"90c1333fa6cdb7bf141596a79a7bf3d81b72f27f93dcffddce7b9609537b7c40"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fdc1ee34ff6de8a4ab0740ec88c48f72199efee0b5b62a104cd2a8ac781e5d5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d9cb28fcf1ae89b08ee39d008d531f0dea1fb4446fd088e380b8e2b968d1245"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ce4b0c7160de4210eb1b33fcf82b35e7528acc491213be2fc6f7410225cfc4a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"a40c4e09cfa40d494244062b3aa9c65c837538729640ee2b7ccb492ab41bc6aa"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6f92cf0d2d7c556ae3fcad603f9a92ae83dd2f01e2b54ad097757d584489dd6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"02b347a9e1c9b4a237db0416514c3d447b5c332d16571a19d88026413087dcf2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f57be3d7afda1a213d333adf274b9b508bf8d9db7aa31d11714a65da171c0a6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a1813d2ef21f40742e380a25ca780154ec159256e8bf63e496b0fbba72ccaf5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"0217f693663481cbc918a78f3f9b4b2af8c154a48385631bc55da8c9fe508c96"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":613}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f54df8f5e72311c47898d6a1d684ad946fa651783b1ced7c173e159a54bf1c0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":674}}}],"partialFingerprints":{"codehealthFindingId/v1":"19990c5cd865adedc8fa976785f83813918bc0a90d573b74af7cc196c82b2713"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":690}}}],"partialFingerprints":{"codehealthFindingId/v1":"94cdd2a7eef3f7d416fc923789fe7fb15592869db6ae2c01c7230159a752c5bd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":709}}}],"partialFingerprints":{"codehealthFindingId/v1":"e80bb15d9bd679dc483cd7f5bd4252d41714b5578750fd7d5bc75fb0968240ca"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":721}}}],"partialFingerprints":{"codehealthFindingId/v1":"90691894b71de66bebb8d5a22bcd8be1170eabcdcf516cb80dd8921f1aa0254f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":733}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa77eb5d11e21bf788a1b33ad5b059f210fd121def331d55c89e26f5403d8083"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"1829f2f305cea72f817974aa1acd833395f167c1eec07ec165d002db8f71fca1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"79d50d52c5d77d22319c825b3fe7f246eed6f8ff7be61ed3e78b1ab70d446146"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"22fe1492a87e170f59793d122067a8b85095760e394d4246e6c445e3af40c09d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd67b85b47c814f3f4e8e68c1962aec9238ab51a2c66db190092db6b92a5f71a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"588c43da454d169da6ba74dc4e622e20bd6da1684b8945c6df5ff46b7eab4fa0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"76e3655617da0a7efb8406414643598dc5bb7830440e82db145502174b9a2f83"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"47fa1a461dd12f98cb3f2456d58ec3609227496f21f3f91e5b66fabe06902b62"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ca9a6af24f3e4b1f482066b7d0f53cc6faecfc3392f8b77aceaf945a4d95125"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"76bd55cdb3a4006150b0390b4b22043441e9466c284b42f7b1e4250517d4a8d2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"65e714120f4be6dfe36e22ba8ae45bddc3bc5e2a73f00eb0661e08e21ddc69de"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"aac031cdec5baee5c0ff57774771e34afa1e833cb66eaeff6e09a63b0881ee15"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":354}}}],"partialFingerprints":{"codehealthFindingId/v1":"d018e492688ae8955771fcd65f76a8347d086b52583709d049eb87813ef94bd1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb061fc66ddd105382b95791d53b800351514cd755414a9866295f001e73d186"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":380}}}],"partialFingerprints":{"codehealthFindingId/v1":"b94164d0ef03fd310514b2834e8a6bb90c89ec4d3be2b5f10e010ca2ea9215ef"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":402}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e6f046e823ac0874017089c51e0d33d5cecdda42e53188ad62553a40bc97b1c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":430}}}],"partialFingerprints":{"codehealthFindingId/v1":"221b8694275636cc969466e36dbe67a59559a58c26fde1f58b8579ce758a9b8b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":438}}}],"partialFingerprints":{"codehealthFindingId/v1":"7165458dbfa6d0b1036791109f53b318d700d629986d8674e826a62e67d8a091"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":458}}}],"partialFingerprints":{"codehealthFindingId/v1":"2074907763dbcbea72c1a2f25021b74058f8bd2554d74a907d6556ee67e65e19"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":464}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb329bcc32f601d6687cc27cace322fd6b79916cfdec3ada423c7624d2b78400"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"603bdb5b5eb6fee4c9d432a35f14259d5a85ef9091e1d1e6b33768123f894f3c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c5fda0f3ea0de79c6bd0f042598567fdd06415655e99d0916350780e8d8c779"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"afcf6cb5b5284cb9cce20097ac990fe2464fabd84f8ce5c3a352b36195a4ffe1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd26c922773770d4c172aadccf751fd81473f94b7439ce901cdb821704d70d68"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"89ff6f3a06983f9d02c66d70e9e9534b04e9443d38706787494ab1732ae5116d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Progress.vb"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"19db56fb658057ced8123a1214bf0513b5076e505fc0cd2a7d0d68425f0bc1e0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"27b732f139548e12dc0bc54c84392344599cfa555648272caac07ed40dbb75a9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"29cafaf388a20737dbffd6013a787c5a6a40fcec16d67cc693a58a49558c901f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7b6ee2ee42e2736c44af5024846716611c1603cf41dc776d75b4239553c4ff5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSettings.vb"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"17d07ba9d54ce4f8879bce9fca5a85e6a8f7ad254c7ccc9de65a77fb25a31720"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSettings.vb"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"9dffeff09baaa1ba0693442a89506191b6f682327a9e79e198126ab4c6815c2e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSettings.vb"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"68c530ba308f364dc9363b08792cb9ee74657a0668ef9fae27d7f17949555b8e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViewTemplates.vb"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"01879937edb6aae9bce6db5d472281842db98f66f6c87470f3b29f00d8805911"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViewTemplates.vb"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"441387133b5f689fdc43ae4332c129c1b7e1791fa9f99f527ac7cce10a5f915d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViewTemplates.vb"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6acc70a5f921fd016018ae2c00bc9b458e1a6b8bcffc90c4e97555a63093340"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"691aedb0d4e3456cb4b862ca90d202cfcc922a55f6101bb5bb9ef41f60edfd7b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"9750a9a5f9351f6a3b1c563153c8780c5134bb8caa1c1fecf92eda29c0c28633"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"86202a670e4e7bb2e875dacbc02bdd5bb69536485fa8835a42fac65fa84d0d95"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec1f4d242400562802f6cfdf59413818bb273e3b66777be321b638a814614cbc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1feca89582acea52f5d61ac07959a108e34010414234a23218fcecf4d567dde"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5af1b60736261ae2af0f5e796211e25fda9d007169ab76c727a28b5d3df4999"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"976af79b89de9bd3f71e81c5f73eaacb5c31a4a80af6f8959e4e8930d4b633b4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"56b8b3cceb89e83fbf917114b882b956f831859718d49718e80e8f096cf99aec"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dde636428c67792cca7627006d16aa2001587f24c4ad55851f39fe17cb12f2f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"83a0c43bc6915cf46615feb090bcb83a1e161c0e8e40010d4bec41fec13e0155"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c5f9c9e2db0faab0a344a30d72af6fbb92942b1d971727fcdc4881f9c3bd853"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"998b1a95c15bdfc5fd1fee0b067a99a4b194ebaeed14c41c2c406f86b9d60c47"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"88afedda2260b4e85babc5aa0a3c955f7df9cc34e415df4e1756a7f3993651ab"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"a19322264985e6523fdcf035b04343ccb77208462959e99f10217f9f3d99ee3f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"41aeef3c9587a59a8ccf480f4f556d98b36bc863b3b50372c98387066845db02"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b673e228bc5d7b0b7f42c5de323e6a7dca5aef5a84974852353acd9b4a2e440"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":691}}}],"partialFingerprints":{"codehealthFindingId/v1":"91888e93873c9022c9e8208e77fd0a0d89a45844638a3d2d72404097b121ca99"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab1abc52b4d116aecf856e175a29d618f49cd87d1fb60be5dae9ddb4abc96cb3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"32215071e0cd71964aae6cfe2064dde4412848cb560a2de6d565e85f9fee62c4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"87e16b163bacc23469381558c38aa3fc5ec5c4a644f7c06b9e94a4213ac91d7c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"01b88f79e7e98886f2eb777bea7f0d35dbb5536eec6d7711e2a82f925e11e7e4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"12d7808bfffe4eb4927279f3a77b3cb6ed2f993e4710f36439c734372ea31ab4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"45b5fca82e414a1cd996bac2a7a9ccb97f7821c620f7e4aa610bc1c2494496c3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8f5cd4793f56c8fb39d92fe0b25421656a41a47c9e3f9fcf9b27d1df0672dad"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"a406fe35a48b0bc2c6bda949e70517b4d1d1502be15da0d308c9a6370e9eb4a9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"5412173419966ca2ab7bc9824ca087ab53d1963c3539dbc868e768b1b2833c92"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemType.vb"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0daa618eaa2631820d3f45cbf3c9553d172ad717468be5864bc2c76663ffb10"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemType.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b9699e8404d4b5ca90bdbe304456556d1fff12b3f67a0fd1c4e6a0d56ee7c23"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemType.vb"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"006de8cfaf4bfe88303bee79d4d9af52f7444fc9cbcb9025cd15baa1f6741c6d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemType.vb"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ca51f8d9939b561b8cf73f8d3e6a2c3c9aa3a092ae736d34e2df6395d82aaf4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemType.vb"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"50ba518c5f466fd07faa82189df0338a4260c07f3c322cef80f34f61deb2e91a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtWorksets.vb"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"03a1ce98b85f1b06805a972721a17636d737e824f950372ced6fbe7ebb7598a9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"905dca391c56e2b9da7cceb9f91768d35c300ebecdf31650bd9a641131109fcc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"1979d600e6a89e82e85d37bf88241eb5db9525c93395b63e8448ab29f90348e7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9353db369f8794d1b6665768b5ef8ac08afbd84d7b65a820d3315a301bd80a8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"33205847875009b5aded9d40239058cb078013bab84756f79b7f3d88ac3dad09"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"c553817e4955ccdfa1675369e83986c2419decfcd77f9c265068d0f60e30bd25"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"d51e8df6dbd92e39ea7197bb63aa02e0d29aa575722d48e4d8eef4cfe5035e6c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bd3208619e53d12e087d332c002e0af204bf22ec2605a9829b51666625ff9de"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"65440ebd02ffdd862c7808e29cfbc075ed9a77387d071e19ececbd5d5c01f285"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bf0df9ca99ad4a569febd2011855ca2f1736d3f163185cdec3b8b362b00b5c0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"a99832cc8245a5f5acd499bf570bd950882cdb55ad01f570d17e9c41152e02c7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee58e24aa01b856784aa946b14b8d70ead1fc62847655f0648d9ec93e1d95e45"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"145d8202c01745d90f5b6aa5f10e510702a574c11988471ebcc7aa830469ec5e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"87d3de14191fac024f137ddaf28c9d0bc05406fb205733e0b749c1399ed6a3aa"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc460b2a316b629981efb91b8883639095cb8bcc94496dc7d45987eaf26a63f3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"4aeba549e8cbb5e3fb9cb82808e983d237cd104221e2204c7cab70be7939842a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9b48a582147b62b3912280dfc3b0a2db33ddb4e4dc02c2d606c0c2d50cef006"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ff227c05dc9a8436be319ed22c7735993efc32cbc92a761ad8cea9fa0fa724d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bb74e8a76d02ad591f15afc5d7c517172f15b5281f52c90ee50fbe712a3b0b2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"50525f07fcb10d8de5d26462d4a9ae29ed4accc79cd106274580e08295b258a5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"a85574bdc7d75765c2abfeabf84af643e831ed79bcc87c228239d1eb2ec5b7a2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"8499125607563d4e236e0d947b3db031c3760be7ca654124f671b30b8334d4d8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba5df0497aeb9da572478479f157eab568a3cbaccecdbf3f5f7bd912ca87613b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcf70248ea6dfb7f90455fcf44f0c8da741d475173be9004707805ec62edb5ba"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a08a5b893ebd6086ecd01a7a92fae91e8193118ac2ead87d585de71a6aa3366"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8570d551c430de692c60d5b77ce66681a31baf165a5e78000c96e6c3e271981"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3b7d9911cac4e636745a72bc3ca610708436fd48fb4fb5eb5acfdd38e3e2e61"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"f952558355b5c5e1b831c743b82a7ec3af0e8a422e0ef3be390fe7e0c66d8c95"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":376}}}],"partialFingerprints":{"codehealthFindingId/v1":"face2ffe21ecdb40dfa7a9596371fcf188a03e3919b79589392f931fde13e5de"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"74fb7dfd063e9ed2156a04e77055f7edd3aadd37add7006aabc9ad5f4e4868ef"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":416}}}],"partialFingerprints":{"codehealthFindingId/v1":"094688fa529b55786aa12835f1c358e306c1e6e45f4f3378415602e3b9475353"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":440}}}],"partialFingerprints":{"codehealthFindingId/v1":"421f0de6c6d149b84bd3ea2b749f0a47fc2159c151f4b6262dd56982f1c14440"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":480}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3dac1406cc07dfa8b66ec9ff78ed926412669b6d0d9efcacd911b7b43c933b7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":485}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8b2d34eb4f964a6b0cf7cfddd91d79360d6b4828ab3114f64b9192ae987c4bb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":509}}}],"partialFingerprints":{"codehealthFindingId/v1":"56ccae72edb7531e6dba0caf09dcf8a776e58884e81077078d7fbcb061590303"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"527a7069bfb65d4d103e3c499c9d3c27757e73126efd929a38932d2e24893d9b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1680310505508de0fe617ef84e93a91716106c62b1949e97af2ef56cf4739c5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":597}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad74752bffb8ff2708d286f0eb9d40c79d30b7b5bb43eab65c1669603a1360b6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":623}}}],"partialFingerprints":{"codehealthFindingId/v1":"306af1a236745a43eeae7abe216662388e238652a3be7ddf67250b51a99beb47"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":684}}}],"partialFingerprints":{"codehealthFindingId/v1":"5be2c484075641d1fc0c5ef40ae5c8d0d1a57f368eed0efd7f4188ac57952195"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Progress.vb"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ccd00c216eeb2c4989746f2efa133889d85afbcc853c4144456827b72917f7c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"74d507ff45182d5b1092e95831717ff525e8a703ccbb3bca729fc3abc5af958a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ee48bc9baf722104fad49330aa6366bf34bc2de5decce9d17e2e9ae13d2af3d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"08967d7a610887ecf947e78f382a98737d6133bafa8aba654df114191c0b0f0b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"89e7c00b818025e49be900d9fca95b77c7fe30e24d4dd5594d64016a24d1c770"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"83e1d8a57435430c8cf9ac70060e5d9283e7a296ef78d6e4e242d22391eacf19"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"86e189ec655f7ecfcc9e7802eb85698fe8fe3afa395deeb8cb9ecdd355cd6674"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3a38cb7135c331c40047d3caa699d0b63ad2e7c31d53e6252ab1d9270772134"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0f73fd351ba0217ec5d35c0c42c3fe11b827e400889a114a8ce4c49db3ea4bc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1a949de805864dcd4377a49d2d62ba432a8234d22d757df92c08da0e37c1570"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a937b0302087ebf17112b972958a9e09b779c0c9c0c13246cd88dc5638cdb68"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fcce3195dfe9c81ce84675761e9cbea340e383836081425990817fc32c608c6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f175171431b59930f0581a887a4639bb72d0068e17ee935e3cad84555233fc9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"149a51db0328092cd205b3425136386f7f313f38996cccdf8aef1ccb17f76462"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfbf9373e8898f942515c4c28445e1375a63def27b3d5233b281bc964d5d0bb3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9218bd8f8f2ae6ff41172b1b647b601e598f647fabc9c084e1e1c64b7066fcc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":367}}}],"partialFingerprints":{"codehealthFindingId/v1":"b80d9db601552ebb4ab548a5139c6273634cf73d0f5af5b8566bddfb90fc3832"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1bcd4d7e7f74a5e1803655c446b542abf421c12fd808dd5bcadea885e66fc8b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":400}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3e65c82eb96c544f592b13ea21281de0dd8653642b037a8f156c81d2d22f722"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFamily.vb"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad7a8c9a649793f5892c90bef04d280e2c7d635a3d5455e6013a95974e655ec8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFamily.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"8612ee99d23e04d9405faed64a7a787bf4d0b3d79a345698c313be41934e43b6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"44decd3d1d656649af8942d95208f54d236891b531560ef9f8e16e23e0b4078f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"51175ea75ecd047d4806d23d4709ab1f417d240206d49e9e570407bfe6be3621"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"103a014c5dd2431425338c08b11aba96938fa7a6131b452e7d9a7f4685ab2d6e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"afb69fdf766f3dff407b8c3090fc9f0e987c86b7262a6fa65d94942ce81b8efc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e515f8e95fc316c42dfcbd3ca0951159436fe3f73a67474a1b667b4b89355a3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"bde3a84969a74b9db6c50bf08516df248c2e1080555aa6990831c35ec67288fb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dc2a5e3b5faa6c3368e5c72359d56ac615b601cbc520cd93f836d3f63eb47b3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"20c1ebf88a1753fa92a02611cfdf6db4eea8d2c184f7f855aa72a4318c31ab9e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc3f062c63c0b40af67a141b126d3bf2429104d2117852c355d05f3237769a25"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"002e3e788715b9929e69cdcb1e4b467c466e658f41d5ca58b85122b976b3b421"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fbf94c69c45ad58d5be28ed4eefac1847b0ea094ccc176ee191757790e61e03"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"09cc3992205e79219e0bd01efb7dc4d656b2df53f9a63d57c7fb01af416a9ea6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"176a15b1cbdd9d4c597e7f30bde85c8ab3f2884c59113abb0e1dfd1a08b8c3aa"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd3690491501ed5216997b978de9afc31f82d740bdafc8074a13796c9fe326c0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bf672aa48c8339d1b50843625d08506c032d12e98bfdcbd189b8deea2a46565"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0af43b29095494567dc3251ba7c69dbfd33ad16e7de70c9ddc001729875f02e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"73734894ddf8fcd46a1eef2b122cc07ed01b83250a31196e17f82fe53d814977"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb345a396c779a60c951ec9c1eaa7a45a368613eafe03e9f96e25222c498a5bf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b8528f021923de09ce369ca49e3e38426602d5b39e17ccd8aba8746773350c8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"b29fd455d76bb550f329a03af3b872178f2bf7a1e46292a3096a82916d30f8f5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d73546b5513e5806c4fef0a667bc15999501bfda6e1aebfbb17f1f3a26e7538"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"897f3b6941a0d2151fd83b4814a80192481f2ccdda541b409470e3c40d4b56f5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"f500a4225c3e3128e69c0c1e36488280ba1b0cbd9140d3f835c52454c84b3c98"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"949e13aed0be9d848bb168761b035788a5c3ae35bf7c729d668e822465b16b84"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"01be2d64d40dd3f8804fdeff64ec366eb61ab1be20ecd4bdb1923b692f0f2da4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":338}}}],"partialFingerprints":{"codehealthFindingId/v1":"b25a9817f3573491b8d60eb8ca5d2491dc7f0c5b70d880e75ea19122753b9405"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d173be8bf2305a34def31ee4c45898b88258468822fcb81dc3bbdb61f6c4d62"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a8189c610b3d31e33c76291f55e8eb62235843f7962408d4561d2c90033cd52"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":373}}}],"partialFingerprints":{"codehealthFindingId/v1":"865b292eee5590a09a2bd21e816c5e46987f6fb8c6a866738cda16f7aaceedd8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":396}}}],"partialFingerprints":{"codehealthFindingId/v1":"21b7e17276903b919f1bcff1f1ae1a9da28909e290458e4faa458de9b6272c8e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsView.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"97dc861fb917cceeedcd08859648730c265ebaf36b5eb348c97b6b8e98aa01cc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsView.vb"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"8452d30029a77d887f818efc438fbc0a665679a1f43e0a56a253796203b46c43"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsView.vb"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd7a7c14c7e0a9dc87fbdee38db34690d614882595062f370313a6b9ab99d7af"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"197ebed4de1aafd4b53228e218ae04e0fdd608a7fc29df8782b47158f544391c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":501}}}],"partialFingerprints":{"codehealthFindingId/v1":"978086f4a295ab2cf39a3a983e3c29e77a2b8e16a07e55a1a302ddaef88388e8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"5aa912b79d000a5ef9cafa5834fc7784dd7d0dba278b96e6a92c6f650816b7d1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"856564ad316287d38b5f5f48fdcc8a7fdfce2db3042b40d5d99f215258768872"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"26893adf09265ce9ae4af8bbe7838ae46130e14c3dff8e2a36ae7fb9d97d9228"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d6fb1503f5b9a329b08823310b1c75a5df0167a76f7e003498181713875a179"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb8b96c57544e09a38bc62081dfd26bf63fc754c13f215450d3d0cb2fd3213ad"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"2981820b428c92302113ad69f79b28970cda69094aa21cef9a58d77ec1ad6202"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"e87dffe64b572df886872e5271e00fa5ca49d4856ee20c3d98bf4c5f437163d5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"44e3320e289ddef7dc0d628d654563ff232c2eda2b9c7e32dafb231e66655b73"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b7b121b13172ad2f9ee00362730b8585b4e988eaa1a7d5f3b9748e0f69ec40f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"38220f509ef8d31ee13c1d68029e008b3e1722b8782081113808ffe926a9193a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"1007ed439daee6f4b925775c880dcbda365893a817b4f8e486f0ba107919dd61"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ItemSelection.xaml.vb"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"035da15165561af8732719076581c4c5853f3b7433c3de5d06025016bbe21139"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e1c17483f1c98d7df9d3631441f40b46fe2d4bad8bb900c9e017a515b64edc1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"65bb9a7304b7f21334f7505d3164e165e82dc5ac2893d6d85b68add54487213d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"7dad0f99e961b2727364f14fad23c7710b748126193715d173dd914b61bfc26b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4615a68f5c3dcb2f4a2b997b075304086944a175c784400e42b26a7dbd2c176"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c024e1fc90511f42c1264e2c070e968b594826bd5ee1a85c487f5ecee1f1817"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e9df313588cc17e3ce7e05df6579d963653e98922349218f9f8f4783a545297"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"9602d3a12432546f357e54c22d0c7b61859754db4bc6212142bd96364810748e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4cdf8b3e0b6defed6ee5e812b0f0bb06b79edcc5ce46a552dfc944470918d0f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"121b2ba7751f56995988030f66da8cecfed934e7fea0af556f5a4ad631694db8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"838bca0235b36d11d5f0b4eedc2951c084824a23fec47eab062f6d19de47053b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"52de701afb570faf00d206c73333618d33bcc2c3fbbb164d205170da9b69a216"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d0e5d397ae0a3626301fb75fdeef0933e6ff9b44b3b6591eca403cafeaf6ac2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"82f74bd39874d5762edceed8018238138a701ca830199a21e5550b5332c601d8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9bb1c73aefdbf039bff2179e2644ef17f17c85b2af9e00f1c215ea082769e31"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"40ce0d5a753a1d41fd93fb580103567c0ee8fd29ab1c72195d6b6b9863cb2b21"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"59cabea48e67cfbff643be27d02aed31659bdddd9dc5cbdbad0afbffe6ddc418"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"f17c16b56f334eb7d9e5fe449d17f0e79943c339fc7f67ded700f3c0089b8ac8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"29bf981acb46b415da94257fe702320e022a33595bd159baa08635b425d7a4ac"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"eac129a13d3e4ff05319c6a2224d86f59108b2189fdd86f676357f3466f807b0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"b66cc6507cbe24a62eb308ff1ea968ee129cb19a9f14d7e3c26a3e8bbfdfdc2b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"3967c4f2f9c7d50dcd1b59e666e8c7b8a889dd58513555b28a2dbcfc9c7f0477"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6e15b45945cd43c45d50bdec523443662051059ad91841d8fa4ec72f063ee96"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"87d727b68e5965c41f2f4e9a2afde250fed93acb52e8d935e87128e69ecb984c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd269701b622f2c2885e64284b475f9aa5fb7ebac9a0d646f7ee230b633427cc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"840d1f7a80c43b510707493a08814b2dc177f0203c58c335411d1dab2e47bd08"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"02bd101e8028d2118005432f2b149a16d039a61639707afbd85c365979682ef7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0ca26d40e44b275fe0312ed5c85f9376e500a9cd5f35219bc2b3b62822d629a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"2897181b02c42d223eba7cef676ab9443dd514214db0ba2858085ca221d389d6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":354}}}],"partialFingerprints":{"codehealthFindingId/v1":"85353c9247e36deb04e676448a2b562d0b245d877beb42a6e0633bb3e5586777"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4e4cb45218e45ef44cae767d837d9acf5d84f6ab866fafec770e9f09f5f5820"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6d224a108b053d5617f50d9f50897b78bc180be3098e8535a2f2563f28b0db2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"795bd150212f35ccff5d08a1fe412f09753ef825fdf8b644919f86084c0f85f7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"f51961a4492ff7f1daba6d3566bdfe9cc7c4db6c5be445a6a6e85fc0ecd3ce2f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2ffab3cd0ff88e688653189d56b480aad82286f9bf564f94b8a21c38613e53c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"959e71a09bff1bff2d5bc9e269135f4a3efde5227465d695c709c979b21d85a0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"161e1f0e61366493d7671a779b2f7f6d712444dc35d446ff470d02a28742c600"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"adf0b75081ba3f3d8eea5dbbdf87903e7a8eb56ee9ace1659009a524efb84f9a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e9b113dd68e444d05593f1b5b705f212cffb5b9465b0ae56e345ebf386e69f2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"f20e5630ea6062ec2c2e0462cd60675752d0ab3f1780f9f31bf76eb32d52857d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fd1214d2b78d7714d678714d6d2d82f1ef7d80e8b9d154fc9172a2bcfd65583"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fe319184c90a9d44f53761d9cf7d0c04fad25f099d64a1b797b18258a586c4d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5ed20c3acc515b53184b2c69366d0d2ae02b8e9623fd2f11f0be077b7b0d0c1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee4a789e9e5ebc570c0fe00c23204bf64841e782e7de063fc0c9f46fc7347df8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b5af59fe64202b00d810b6034805f733b2c86e26f1fdfa5adfdbbc30c88df25"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"571d35dfc69b0a6a1133ce27a7a87da505b91a51d0485943dce772200c935667"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewTemplates/Case.ViewTemplates/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"6802f289083003eec23dde30145edb21c41a9a2f2832c1a4f2b86a8af1379935"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewTemplates/Case.ViewTemplates/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9c2d80421323820b86479fa5cb349bc2dc9ca7c649ec17b804bb45bef75ae77"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewTemplates/Case.ViewTemplates/API/clsUsage.vb"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"003e4d9815b6a2cf0db26d4b6f8a2c7d9ea5ef777fcd9d2fddc81e786d6edc93"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewTemplates/Case.ViewTemplates/Data/clsSettings.vb"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9f20005ce6a412036be284a28e79ba9bd2387f7b06c45f61ee59a7a09639318"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewTemplates/Case.ViewTemplates/Data/clsViewTemplates.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"a68bc25186222f118fa785ba10aa4628dcefa3efb920a4cf1bd01fc79b430d39"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewTemplates/Case.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"89c981d8befe376b19e91e2189cea98871117c90159e86cd3f5e3289409ea8a9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewTemplates/Case.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbb3b0b826b3dc1b5f30d6a32db5e719a5d3163d9ea1cf15c8d42e6d5b821b49"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewTemplates/Case.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d9aeb3e1a92a97786d0a4d929ec29280c17096ca39c7bf65034f0be405ef583"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewTemplates/Case.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"54fb05f416ea29a815ce241feb7dfbce7afd3e03552871fc443bff3d7b413cbf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewTemplates/Case.ViewTemplates/Entry/CmdMain.vb"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"48bcce70e220b627d48ddc99049dfd25acac751b35e284e5f7154129fca8a59c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8b60cdad1c30a06caaca1c0d41050a13cfbc0ce31d230688ef40bc83f44e717"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca45a813ded2620e13e4c1ace6bfaaca64f64c65ee88388936603f309d1bd5ce"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"71617ff5472b1b2a24b93c9dc8d13f58f3f01487b539309e1fcae56327af893b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ad4cc6fe18214bb47376249cf51daba70a5b276bfb6bca1dd285ee30c452138"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb84683bc576c850affad1b37d31f0434a4db427e178b602757c702244beb4bc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4df834f2622ed9fe57d8da85136cb39cbead277f888f7d57a6c60e21f3902df"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewportReporting/Case.ViewportReporting/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"2126f7e75c22f50ef61c625513c28ed6cddaf67a1be4956e8dd8a370a3257e8c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewportReporting/Case.ViewportReporting/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"262357aaddc564dfadfbe92e45fd8729f3a669a512e7e24a2346ed55870ef172"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewportReporting/Case.ViewportReporting/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c01a443b78f8d827acba50317373ad30e2626622dcc548d98675a75388c24be"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewportReporting/Case.ViewportReporting/UI/form_Main.xaml.vb"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"45fdf528ef352d9e53e6f1889cdecfa827b40c48b1dd47fc622457666d1960be"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2004570eb87cc49ce78c62ca2b9a0520ff56f7731a69c33616ac6f843aa5c0e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"630c8fd90d9aea4bf80e76c87ed3ba40f7c1eaa016ab6ceefb81e21d329348b2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd86da939e5e793263e2f51e677d26b58ec64b68e8a5a9775a0c27285e9a9a8d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f6ca3b443c3c28a0dcd180e304bf78bcc4b07e2b62c795f2c3e703b7c8236d6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fcf065f6e4c79bde39e99cfcf2cc54774031851570074a121693ac00cfcc23b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb8198ec2588183c5875fdcc21ba86c297fcd9cf065c161b6d181054fa7228b2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"653659cc84443b76ef1c43337554bc8c7403981f061c70c464fb61e747d7a3ee"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"b042ef30b93f938521b165a8bc6fcb7b3c0ea178c15c70bf64f98843f508680b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fb37522fc8e2a376e625d62609a797dc50664e2da13db99fba8401dbad93fa5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b40ec726e615c059840d5c7d90f762a3a24de6a0ad626b641b71770285dbf6b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"c98a221b0bc2e84ff01bdadc4e01a34f9c9449652eab928b9278ba3087bb3d67"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"168ae3659aedb22142b756c820b12741501e94c2800bd22101a8110b6168ccde"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae1c020dbcbb91d2b41cca8cae32d19037827cc0324d4d6bcd44b175ffa9f676"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"42cd025d69803c654922f36ae72181cc0bad4e21e35aa8604e42f497353c3021"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"074bddc6126961e032e3227f85d9b2c60974b19f852ba557236887251c7ae17f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"dee083daee0004be4ce73883d6287c9040be714b1ee87f380ff30c57a11a8d47"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/Data/clsUtil.cs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"911e22701a98c8998888a987bf1cad9f20e44e1eb226a98ba7a4e3e752abb34c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/UI/form_MaxSize.cs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"70181604f1073a50d2a57e998891fe241747d9e75c6fa5233962ebef1f44bded"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/UI/form_Orient.cs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"4815ede5a494135e0692f9abf312c617e0cc026595948c25f0b7ccbfff5ea061"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ef40d523fb7a45555ef04f7c4ad5c48f84974104a6760a1fd8650003e14a111"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"e147c9308d73967543e2130a15717ce132f0825236f4f10548072f335cc51050"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba577950f771a7cd6f26a559d48e69571b6dea7b8e906c02999e49d159f2dd0f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"a336b9916a1196d528e9f671003cb4c8b4c17f8838da0a4617121d2defea79e3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd09d72ccb172d6a53f0a9f247ecebe3da0a3deb51713709d04a4fae622b508d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"c23788984aab2b58461b07c347f313e5b4c2eda9c489e11240108b6a0c7074e3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c19572e2cd95e85ec5e7f2c0e50415102d6a507dcf416412629ee97bef9d715"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.BasicReporting/Case.BasicReporting/Data/clsSettings.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"6911908b683ddfef26fc38fdb6f1f2ccc74bcaf0b924a9f46f6029f471a35ffd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fc97380aafaa6902b0e72052c8d5948631f458c96a56b71363e41247a5c08d2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b145902fcbed421cf4c98999d07c353327407176a00ff10fbbb476dc5d16f51"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2227591c99a6fae3414c7d476fb9ff7224d52d902198fa69aa758aaf07acb94"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4807a320a94bbb3c1cb93863c42667461fe5626e5bfe575d9bc961a2e8f3694"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a0aa4511052e08b78f53e05612e55684cfea05de88810892b5df173fe356ff2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"9aed5fef62e29f71edcc1d773573c36b4df1f3563c75cfdc6855c254f5b89d56"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"e35113031ccbdc6f1abd07e329b6e6ec4bebc7b98db8fbebc5f7c4d14141dea7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"f979487c02887e99e8777e2c394a121580c92d2a867a47b8c048ac9961bceffb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"c312501ed52d97b4e287c59f3baa816e31680e1bb764fe5afde5818520a2aa1b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3ad286e075dcb68c7eeecb8105f4f40cf9881d57160a7a65888c4881fb4357e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"e06c4d5d30843f5ee4bd8c5554c27ba5b015096b8ca1d93605d5b15879041f93"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"02cb89da71ec104b4f10289999cd6e48d29b6f955cb8297ec250396cc27435f1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"72b3fa065905c26be6c948af132f194f1a9684b1da4a739dbe30e820a58e6230"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":489}}}],"partialFingerprints":{"codehealthFindingId/v1":"f29598b42164eb1dedfff61504b819bb1e9ef5b4cc61164ef2d66a71e892e299"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"c607eb2cf4e6ccfbe2cd698b2a4bc45f683bb4d1072c70f42d4d3e11a6047222"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"987a8ad64a259f65d64ecb5545fe09586c95624a9713ff48f5acb694402cba92"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"41ae3a4866ce4b988d9e89d0a578415f4b0bc3ee6abba97047fb455387d41d3b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/Data/clsSettings.vb"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d45c7caaf11833110b46f6a89e4b9ce982db7ac614f8b0d1e9d7068a7920732"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fea5affe255888d58e3da21d496eaaf6d2d08be72022ecb741352a534f56a34"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4916a8dae36d9df138dbc915c5c4d92f822c4985006cb51f914b0888acd20be"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc3d5a931b42e305d3dbd20f7ed47da3f3007855123c27d1764afa4465021c81"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"583e184162b529b9abd07aa6f1613155d4ffeec8208dba47b813a2ec031e46e7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"8dc6dc908dd0c5d59379b33385daaf69436e09a630a1f56923e7c2cdced070f2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"decf7f19c8c09c54de4c67be38aa42773c50cc094180ca8a49928e18c271431b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6d3c0736db1911bb21c790d4335d54d9cb1b2427d9c7cdd1693a0c873668210"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"31c357cb74f79ea8d404e7667274bd765d5f6edfb7a0210bbbaddca7d1408578"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"76a22811d3643025c349fb62d550f8917156a8d08f14dd8ff5e9efb46d458125"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1d5e04db2bb38e848545faaeafb6c34e56e501c5046d490d7f410442ea96331"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0b4c3ae72a93f578b635c4659c073d3b67b6a9554b025ea5364ce802a7c700e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"562d1c2e218227a6f6bd2ae83effd5f9e36fe659af146b465899f61003a76715"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8244085a4ce4b2313a0ef43c2ca3e5105b62a7fffb9ecf8566013b1a7190c48"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"b91f487c14920d44e7f446ad5949fa523676661e11a3d8639909a2d2ef10fac7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"022d44b4f2aa8583ed892581a3a65f717d5a52017d2d995ae371677ac50bc34a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4711b03360ab87f5fe592cbd4543de6863c926d0fc702d2d1d75964d825ebf7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"d307b276cf9ea6e91067829dea43391cd7bc82e043888d9b9407b2e358c68ce7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"634617f7441115864c22a471484928a32ea16b428cc780f6d67fbdbf7e5e6aac"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"e10a139e0818631d520e15936e329cd89103ebc7ff1037c962221ce0895fd457"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"d92724f0f8fdef21ef39d25d9f12b9671f9dc02d23025f064d28fb9f9d1d4ebd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Directionality/Case.Directionality/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"b06ae31c55ab6d8fd443f1742b434bbb255cfb7b2c832e1a6a17723ecbc2f7a8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Directionality/Case.Directionality/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"0593fb4a5a7bd7ff55ed923ed467734ee37080bcc8f4084a57cd41f899944044"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Directionality/Case.Directionality/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"23d5c67f1cec69d536e77399f82b0f23602b9d74bff5b4f998345e371c383ac1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"c793aaa8e8764cd85e4492cbe1cdb4b9e4656037d33e71711fd98a092339e491"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"012589da60ec77189297773f5b119778b11585a2365ca361ac60c4891701bbc7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c865892e11fe9a11b0d7a7ea7652055f35e91994df30a499835e78e86eaf71f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Directionality/Case.Directionality/Data/clsPara.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfbb8fcecb69cbaf6f5fc4fd704e98a4964b957086ec78a8d2c2a8bfe1642273"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Directionality/Case.Directionality/Data/clsSettings.vb"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"5481aba6c9a9bf82e283765162ef406bd1ba829efbdf1553b72bc80fec079fa1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Directionality/Case.Directionality/Data/clsSettings.vb"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"3638db27b876c83638d46fcf91e41e12275d5cbb3523e6a9ed2450d5afd71faf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Directionality/Case.Directionality/Data/clsSettings.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"08fd0ef8f1d64905e82c7d4f4b0db8540e0074fac9aab99d82c54c081be3cf42"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Directionality/Case.Directionality/Data/clsSettings.vb"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef67645ddee3e997c692b882687bf25e8cb2266ffcee7eb2ecfcbeb06deeb535"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Directionality/Case.Directionality/Data/clsSettings.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"76e66a4262d6999b2f1a9c5f54dd19c33fc3a16c03176e476b6ebbd8b6757ec5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Directionality/Case.Directionality/Data/clsSettings.vb"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"95403cd3d404613bde986af31a09cb35ca5b1dff51aa17c828344a3c48ca4ff0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Directionality/Case.Directionality/UI/form_Main.vb"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c4bf141c73e8ef838e87e44a3460ed750985ead7a41dd1a7eaa91d34b177dd4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Directionality/Case.Directionality/UI/form_Main.vb"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e316b7339f19703fe16d76d9f90d4f40604bb021524f7181686bcc01c0beedf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Directionality/Case.Directionality/UI/form_Main.vb"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb26e2ad25f93654723c291be149a6bed7e082a503034d32c5546e52ce687276"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0429f012cd3688e4545daeb372df5ca4f3e09c868e0c2f64131026f4279d282"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"c06c1bcb55052c7e6d2ee127804d2773f02c461a046cd5892fcfe5030e0a5706"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0b7d33c6f6a99b9d9185c7d74a8059af557cd554be92094d97ad21d8567c9b6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"70c9cc085b1c9bf985c741834869dbf3f5218e52e76eff8175aca1fed87accb3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"15c0943228c548481a19e1edc4921314c5637cd5b049c54fb69e13da9cfe5cb4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b99605d73006c31d8ae01be56fd13ad6cdb0418c489958888204eceddaf0cc1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ad340e73edf344215e5ae92982bf624dd1145c5f3269e62a1a4c5fa03b7902e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"a714e2c79363b6a5fb2266ed1efa4fc028df557c2008096c8480586cd4f31de7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSettings.vb"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"071c687fbe3dd21e23166979b46ad1b1db2f2268436a11b8c0ce9098a0c7b08e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"26d6f75980240b869aa34555e07fcbc223ff71085b4476a693cfd09236453984"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcaa692762b25f146a84d786e7831325767c0b43262afa1aba1baa064497eedc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"d32ae88f203890bbda65c6333e74db13e8becfa24a26f9190d2c375195dd7257"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":392}}}],"partialFingerprints":{"codehealthFindingId/v1":"96b819398056a6e70a9ccc8e7346a632f95772f4cdfe5051abfe11fa224d2804"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fdb978b4ea9707cc268999213bad94cf60c61bdd37438c9f1e5489eef696e05"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":487}}}],"partialFingerprints":{"codehealthFindingId/v1":"03c5303eb1c8b5b55ada17a9574909e292129c8257973edfaae86dc3ccea6e60"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":497}}}],"partialFingerprints":{"codehealthFindingId/v1":"691b34e1acf0d44bdc7539a6509eebc2d6597193a7ae292efc18fce3cb12a6ff"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":524}}}],"partialFingerprints":{"codehealthFindingId/v1":"aaf9eeddf8ce930ae71157f53d00514195fecd43503922a565d86863cbabb56b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Export.Families/Case.Export.Families/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"a884c4a6ddff8a6a5256ea4eeb351594cb7c78f9c9d6ece4b0f42f90b2de2bde"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Export.Families/Case.Export.Families/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dcce1ef0af4d4131ec752dfd4eedb8ca197396eade1684d09f2dffa4c25e504"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Export.Families/Case.Export.Families/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"a50e008038b9f970847faa152f8dee8a815f54ee8a756e34b62c4ee1643acf52"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Export.Families/Case.Export.Families/Data/clsSettings.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"45f12ad720f2fe662c79501640d687c593057f928b265103271613f1f09e9005"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Export.Families/Case.Export.Families/Data/clsSettings.vb"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"7612b2c69be6aa1e7728769bd25c90c267410af3823a697bcd8b93ff7dd59cd5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5236679cc8267c23b700ae3d0bd3861894d1cf5186dbb40dbb505fd85788568"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"3166eb61ad39625b20667b67d9566303d1d9889be185c697f9a77f4a91453144"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"176fddd530cb0f2929031bcacd4cf5fb485f5555e88e3a174cdd893dc03b3e06"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7d5ac2155fbd8502ec08ee67d33ed6674879cdeb3bd9b6fef1ecfe463bc1c86"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":333}}}],"partialFingerprints":{"codehealthFindingId/v1":"88fff1cb2c3fb920d5f235ef73e53a6d0243f66dca65f40a8bdfba2ff757edda"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd3c09348fc941b5a9d71943564cd785dbb685a576d3b4991bfee00e9deaabd6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"304662a1abc9e1de2216196494039129996b06d32a39371138a036114ae06636"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExportSharedParameters/Case.ExportSharedParameters/UI/form_Main.cs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"461d72d6c2331d3aa7ea4dac07132b96fbf10c86777a1f31b7a156c04ab0ddae"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1f1551c931e2bd14fd374b90a4631f08f929122ffb5b627f7de62ad1fc4b693"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"c783fc3d9d68a73051b7a5e6940aee3ba95ed514f367e8c9e6ec0a8fbe95b5e2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"a26673b638326aa199c37adcf7b58c7a0000a436ddfbc5f5d2c1f5047ad410eb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"75be20ede03a7e8b4bfa493fa1bbd390e33fa60545a4c141007a0fcdcfc7110b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"f54540d5f329236671447ca5013bc2eaaaa93a50cf6b1be6ffa6585b6103aa81"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"5791066c7442049149f0d4bf51d30de35dd5b5ff75900e56a224a5a9de047e62"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"1852284511779c0923b313e7b94b3abfe99d91bde3e9506c66b15ced689dc7dc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ada8c0d994d1e72c29ee59f775f536a9e825c2360bf137275854f9bb689aa50"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a3a7578cee9547026bdf321fb63ebbc7134ef88c904f8a8e9737f1ccb28c52a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":361}}}],"partialFingerprints":{"codehealthFindingId/v1":"b07e0671d49281fa1f6e69b48b86b0dc20b26f922f9acb3eebe4b391ba7ccf0e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f9903f2444dd2f25f6261d9c04d9e5683d1be41ba3ce90ce5482f6f3353ef8a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":417}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcddb6911ff0d4f298a2f4b017368f74f480f600783706956b32245ac22413f3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"83fefc877854c9545b398a3b42b0b6c4d0402bd66385f0044d13dbc6aaabe6fd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":495}}}],"partialFingerprints":{"codehealthFindingId/v1":"b428e920e79ec5926cfe232f8abd6b00d49eea1dd40f154f990c026129c74ce6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":516}}}],"partialFingerprints":{"codehealthFindingId/v1":"469cf980a02d3c95da8f58efb1093ce171b1f96da4e362106d2c0e6fbb3418c4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":559}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9e366f1c5ed042ac6049797e4d607cb88dab61752e94f5e3c8dac84e8f1e1a2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8cf67361ce9a04675ca90568ebf07d089560a669c089801bc5f47232070603d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc35b0495d9710be304d308d7666e57df6ca84d3d72363abad35c917a289bb02"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f4184088210c8432d2305fe8cb6ebc0d4e65f030e8622bf9b8d57053f63ba92"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d5043ba606f696f036c22a6e075bf26a0745d25e3334b3ab938390d8ba40f40"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"004469f3558d06f8584ac6c97bbf8387e5b9cc00a24c4f33db9e262efa58a1f9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d4185005dc157e401a074aa139c43ab03017b7c56f4b74ba61a9b5558e818f4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d334e13811942c486a2c82b2187c18e9a164e18679f35de669c185912b69cc8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"e08af0850bf38da200021e86f042c5a44f5a02c5da777136b60c27c1b8578d6e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6071b771333b3ef6cdf85f0f7e7b8541003fa221d87ab797997e76555408190"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsSettings.vb"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d25c98a10dd0c081ba90b875e8428648e2fd9827abf4731702943afcf02302a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"29f5ffa351592888827202798314dd9c0b71442ad85bde68e8220d8c10316717"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"2445bc909513e095b0ee4cba3e4bdb39eaf565d49eb36e3d6fad272cd79c8ade"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"da42bf9ead6172ddbcf25d6587e504d7eb64fe43a0ff465e5e4c37e7418d90c9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"31f9b4547ef68071398754a62839753d8c29d82549f3556ec0439793bb0f9382"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d4644ce337ae6ff4bbcfb01c43661e08c6fc8a9f4c4a4adf5317c1ea1960eef"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"5057ccd4107a444f16728d1e214cc3eaadb2a3051677315d66d7e6cd8bfa42e1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"96e8e49aacd5a0c58298924365698312d61ad1949e191ac1a782af3b61ac8195"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd7151e981b500dd2f6365457b6d4c01903fcbb315ff698ddd6671b3a86079be"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a60d4361dd2547f8f5c84e481c983866e9ab9edb718d3d54c9722b35151d6d9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"15c3bb3f53af8fd43a6482886fae8bea53867b1ad7e2c9d25612ce86820667d7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"4356ad9dbdb276de7694c3cc3db800b5fe18b415911a422ed51ccc6644254491"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsSettings.vb"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3f2931d07a50a0e8ae802176a6360f7af72a1585be01a3dd3df7832fb61213a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsSettings.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"9784b293a0fa65c6c744fcd9c48b390f5b6a973b779580789459e88c7a8f034d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsSettings.vb"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ffc8a7d6d683b93bb5b7e644649dd5d4a5d4dae3dd081281e6e23b9c8eba565"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e2ef5fcebc552ee20a8ee1603372156011a7a802dfa2b4295f30bafe6389684"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8338d0517821cfc7769862858a378ffb0d236d750d647ab1ccf9e771f2b10d2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"a813d1c0f26ffc57a730c7436abdb4000030dccedd6f7f1d30caaba5a0ac69a5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f358ee3e74c8ec6e5bebfa93df54bb6a87e2b78066c7962d5a472b7874f5f03"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5f986c8044c61c835f1f03b8a287015078fbe72a02e5438a98a3107cc639957"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ImageToDraftingView/Case.ImageToDraftingView/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"b04d6514fe5ea91326ce14c299248da611edeadb763c1fa57efd2b8f7d6eda38"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ImageToDraftingView/Case.ImageToDraftingView/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"83b920e9968068d418e873a3c749a8066d64afc6677bc46b5de09d734cb21d02"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ImageToDraftingView/Case.ImageToDraftingView/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8f8a1b4c8812e93e51e4119c016ce415c617cc0b355ec72c96fb8a04fd9f95a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ImageToDraftingView/Case.ImageToDraftingView/Data/clsPara.vb"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad0c392e1e65c4b6c9264f71df6b38aba991b8d723522a6e1f6bbf620924bc39"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"e34a8bebda171d9fc21c6a2e5f2f3e3b3ef76846b91d22fee04bbde8bcef6163"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"abe1576e8b3b97520f5248007ad0eeb9490cbe1314027eb976ce4337511c6112"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c2b0e47b245259f30cb531fb8ddbde11ea6ba0902e15d797e8faf3f959b4fa2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"0386c2c90f189c73d9eb7f415a0df4aa39056aa72c7f403ae19a9713608f4b96"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e950b3f6e0a7fd83d6356836842c2e34ca6f8f93e5771941f6b0e62106a2c3e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"d082ffd8afd356c4160da6cdfc0e15efb4ddac9d007fa42a49a51a6e824cad61"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"8867270236aac48ee0625ed322497753c147e754357f57ecb0ddf4543108ad7b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ffc7cb8c173bb00e61a2487a4744e0ca224a89a94981cddc63cc7b39edd06cb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsRefPlane.vb"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fa82f72685e9699bee034a45e6b5efb593e2aef0502b89507c77b72f0bdccc2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"63c51cd6b88d6c0dfa1f3b1e22c7e8ce12c91d8a13b5835d985f69c74c88e9c4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"48a6a609fc67162ab04eb421831632d6ae253ed6b51fb8f331ab53c9fbaac2db"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"6be9ec00c9515598afcaba6e53f4b646b3ae4b2bfc84ae7f5d1c3d68c1769ebc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff8915631939bd1b3cf52dde729b75ce7a90a3a844164043cf6e2d1c91892db7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"43950f5cbd4976a3f6b3c615997ef45c85ab140b8fc8647e7d3b9885dc29d295"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"439db637b9971a022bfb59dce4ffd5996898fc7446a9c49cfe7567b043983a0a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"e001a968dcc664150844a91805a59c9059036cd7a00994e92ac8be24b29661e5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"961b9ff73a648c0c24121052db823b32c40b147aba94c73a8b0f4d598a310174"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfca3b3ac2b2cfdab9e697ea43c47908ab6b87cac04b6a0abc189a7fd41b9b2d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e9369427e2f626b95e3ca090ed056a2e9e1ca754294d3eb01b01d031397a015"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c2968773d2cba235770a6b7b9a8c8c6ec4a298162e244a2f52a28d7298a3c35"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7fb90e409f41016d9c4f6704b42d0359c1f2c7f497380cc12491ef9e31a4039"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"264fd74eebd1eb37cb676e87e181df8ffe5280b56a84945456a3468bcd688011"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0ef89f5bf917b0d1de1e487426c4a8d5359650440ec1c9222705ed768aec61e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdca5514777452335de642f0dbf4c987a7ccf054940d39bfb96205a3f4fc58a5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"2edfe81f8c90f5857849672ab3763f5500c43252821cbb12be15176896f5d1d3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":373}}}],"partialFingerprints":{"codehealthFindingId/v1":"4974e3139034ad52b11b6c6da7bb8475da27d1f90f2b2b3f14b2f0aa06d10d7f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":378}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e2c9c1d66779aa98441e4e55855d4b5b7c65172372dcc73495ce23f40946dc9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"b597e9f5889236434d0079c37412506410889fd1fbd7a258dfadda61fb5867a8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4a15ea851ce166f2f3b025ac5b1852acd30195032b8c49ff9e99134687c43fd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":439}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b441ed07120afa66aee176a03096e49e027512246b7a06a6937538fdd9c4371"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ab888b228b5373718bc8f39c2a5f24477a575b1bf859a4aaffe7bca337f6a21"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":483}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4166ab78afdc03b51f257b3be2ca9f2fe6182b288bd355cbd4427f678ea4be5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":499}}}],"partialFingerprints":{"codehealthFindingId/v1":"71df1311376325b253301ce10e6a1a9bdbd6f9ada5c7ee730cc3b7137f91df20"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":526}}}],"partialFingerprints":{"codehealthFindingId/v1":"17e17088134042683656e4e13178d2f0d3bf00b87abc131a04704af1fa97b1ed"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":531}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f1d461d62cf194c8479044d792a393ef3ef27ad6626c8ed2b3e455ab7f10520"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":624}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc36b936a63b098de9bc0ead6ceefd14d8e996482a9caadf19f1f768d7fff30a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":643}}}],"partialFingerprints":{"codehealthFindingId/v1":"82d690ee2d6c8d31cd8e8f849eae7f46c8e40a4a1fabcc17abcd4cebc1eddf2d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":657}}}],"partialFingerprints":{"codehealthFindingId/v1":"038b5b5b80ef9dfc7ff7bc97600a1de0972d2d94db00145e4530b73a8df1d32c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c040709a9033a7247def4167246506dc67a257e9ad84206853722e51451e4e5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"d61cdc55418b3a222e18df95af105c88b3b31a90e7b896c6e71dd928de780e77"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"6200a62cdf85ebcb5c0e70a4f9ba9f441bf7e57093e8a2cfb0084f1836bb3673"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b02c0e12eeb1ac26701b56f142472b4156b531ceb1e6988ee174f950059045c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d67d19c7582fd838cb371c9f2afcc294ee390c517ebd280a3ffd39205e8a907"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"46d95d142f6d2ea7f8c042e936c83335895fabb293d6dc1ba86a62e37dd1d999"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c02bc0636d69714ed103307dc3c5aa3faf20f0b8cb3229e54980bc4f7d6b66e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/Entry/CmdMain.vb"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"e660c9db86db731769e0a1a5015db9aa7784617e34ca2d70e0d0292dfe766ac2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"eebc76064b375fc8d108d4fa64f869519b9b7c5316e01c2f9b5f73e2d887f69b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"de1e453d7a7eb5cfa9d1f5320d4824b987f346f509d9a8bb2b06b280c3b487c4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc7ddf129dd3d94f606ca2ebe5a064c7aa6486f6556a478f38b81d9b1d7e702a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8794b510037a149e5c877a542412ac5926e05cc62064f879a21ac160c3f7446"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"42799067fd6052512f011b5ba0a9ad596d08eb5c0e88e040b0eaf2eabd2c0deb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"685403af333145f1bdf4597df19d84ceddc1cefb9e73cb69e4989cdb762596a3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":377}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebd40bd3b92edc386fcefeb83352db857ee5003ef26acfea268cc98b3c0e77ce"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":430}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef2a547440bab5239bdc464e1a717b76f4cab92ed9cf88c2e5813f0cfc99c987"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":435}}}],"partialFingerprints":{"codehealthFindingId/v1":"24fac05f5590b5660b0be668ec43991d697ea0f20493e82b03291520738fd527"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee6bccc269367bd11cfa552c90824943c26aebbee9a014538d51c7230aa0391c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":455}}}],"partialFingerprints":{"codehealthFindingId/v1":"74f76095244277c3e2eb706ec79ba3d5f36d8dc841942f0f684a3ed1ab86df3f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":458}}}],"partialFingerprints":{"codehealthFindingId/v1":"de626ed70df942ba8f633e3a54146047e5dd541ad86e5eac6e1a43e489f7ca27"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":484}}}],"partialFingerprints":{"codehealthFindingId/v1":"eef059d3f27128f83d0d9113380715705fa34c9e946a0d9a58363f7c2083825d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":489}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4e7099fc8d0395985d4b016fa8a473911628cb2a6c50f5b7b24eb6dd626cd53"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LineChanger/Case.LineChanger/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"677e13bd8e0b625ede6924497e04fe9a7907a45a088e25276840244f2744cf8f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LineChanger/Case.LineChanger/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9919f649d948868a55ee670910aa27826b4e04680452d63a4e290e1b71c3214"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LineChanger/Case.LineChanger/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a37582d86e17cfdec7b6db86c8429910449d49429e8a8eef41fa326b9a0f8fe"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LineChanger/Case.LineChanger/Data/clsPara.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a38f21109f5ba3e33dacf35fe89847320a0e8d187917318da6feb0c60583503"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"77373417ebf2964dbb1df6f6dcc6d4dbf5d42b9804e5abed6c529b9619b39157"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"300ac1af2187e929c4b1e905af3baf17c75eb08e0318f8f4e05dcee550239d25"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LineChanger/Case.LineChanger/Forms/form_Main.vb"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"57e89086b0557c169cda4321a95df74e72639deccceb55f3114cb599157e5daf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.LineChanger/Case.LineChanger/Forms/form_Main.vb"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"a97b9d1415c8e0868d24b1a98ae3261ef8153bf5483af866d3a2029950c2667d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ModeledRoomTags/Case.ModeledRoomTags/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"2af9b8bed2e07e844ee1aceb64d1a446dca0694e08fded8911bcd088c85ac5cb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ModeledRoomTags/Case.ModeledRoomTags/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6fa01a299874656e59c359f046f120f0192ae9e475e4223c3f05d253b59249c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ModeledRoomTags/Case.ModeledRoomTags/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9c9c22f2fd8e6a4ef8da76d426b38cf48a268525933a7ee09acbbbdc5e1d103"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsPara.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae4706327e75ed583192fdb0bef6169ae8bfe7a89ed2fc366b6071180dae173b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b43a3a88daf956d1f2af0099476ace84cd7e9e5ded0a9771d1c5b1c5f7ec011"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ea31b452dc0f4047772752a9ea9f4e486bf47343991219763b7949c3570fdea"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dd02707892c42df5921e3d350b716e54e3f00637f01505f7fe969715c0361f0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"691df02c0de18ee6f80ceece2edf6cb615746db022116d30b62413f4d423886c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"9af4b4c2a79f5a29252ba56ed1f476a4ad61b0ee92ca7c9b01900bfdf2280235"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"46facb7f6f4734f607711c1dcd37e42242034d875c313b9f94de6b52681640ac"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"de086cf027fb1c9883105adfd63f1f44c1929866822e633ceb85b93d09fef288"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"0680fb26799eba00fe3a24a139a40e3e91b32764f0b26e3d3c3da3b8ebb51902"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"37caf680b69b75b8f75755949c4c574704684dd380047db637a0dc54f61f8ff9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"3597c02bd9a57dc4790c7f16dc58ab65f4265edee16bc40216931344ce58e19f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"94a2da7e317bccc9565bd7c4b772311769053f56b621a957d4864cf5d24398bf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"83d56fe5b2dc42e87825f9179f18bccfec6029e689c65ed0ffb8fcc67645b1bb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"62b70bf499b35ebcc8db7a97b6d9084211dde240bcc5ac34a064eed2b813892e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e09a9c0c120f3ed017ff04057738a0581dbc8c3603bca4a522b3f2557357129"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"9abc9db1a1864ee57398c98ee694bc533edf584f0364277e770c31ac6dece6d4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"49e71e1ada97dbe9a1915a894c9eadceb50c661fa7ed36966a8dae4419c7a8fb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"59542f5a011a5b139e98cad50a194d4f7bcbe5978632b458d071853cbce2d6de"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"98ea37b4fc6010024dce0c0e73b27c9e793ba482308c8cc2b6e5074d819e1b41"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f94235d7667abbb3e9bcc794d432fa2daf3de318aab6bfddb48328c99352148"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"8701aad07bee82c20e46c6d2e21b56d5996d896970fb08de3316993aa9f9d20f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"5dc55d54fa09e1838f77e09830b5ec6d2c3054ca364dcea37e4cb37be6cba8b1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"43df2016deb05cc632a0a14e8d88ce4c245517f9bff76bd152d4c5cc7536e5cd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c839cde7dbb621a9489be44cac3bc61477ebb73552418285912e326ab7e70a8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9a22cedaf78360cdd73f6913d6f976a7fa798522d8fe05ae4ffc371d9904128"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"17d01fc5ca5e52f256ab6262f64a5404bee1a3795f3be88252333417dbaade10"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"90b48b2b61e20bc1b8ffbbc92b3e262fa3b7e560d9e93250d4adf203a8388d3c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"5007d40d2b551354e89dfb93c87826de2cd092024c37b7bb5765b7ee32ca0cbc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"c87121de5b8b485f387c0d1f9f4bc7aadcb2e83bdfd2c2a435881c8fec78217e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b1a1622cc013fb629b5a309fe2486bf924a79f634fd842954573010a32ad770"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a8d89e3741776b6ec044a95dbfe68f616aa68d7d4812b0def08a415d3c565c5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"340c774a81d345d5de44fa1705e7b02f0f69d890df2c962f87701605af469b65"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"15b6ac280a80b23cf959a7ef47902c5c8153d84d146bb467c87406b37bb31c73"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f7c74881323748b2a4b64abe1042641682b55c515f3dccc9660611d6bce1f07"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"6096f769c2df0d8c9988a170676f74bd3fd5ef197f37965a1e83737c6244c880"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"e83af79317b8cf595a6f2aacf6cfdf1c1df4cdfd43f3020ed55c6dce7c2a3cd3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ec5fb8280ed8166c945ae765c8fcaa8c2d8065bf23e02e8f9afa8cddc5e7c8e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"72eee2da67007a587173062ebebf309342eaa677b36e4aa88d7229104aa07c40"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"df5512fc52927416a94d0d1c8ce296434b323e3df92781c14b24a04bf66af4ed"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"67a284c6dfa3c7198e88de16188c2d6e90f962242b31bc925ebd77672d6460c7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"4caab11bca8211c21f14e123251ee93a07c15bbe2b42192196feeb7030c53913"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ef84749992a343536e4b2bdd2ba96ac8b11ff4779229dc81993cf3e2cddfc82"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9aaba831470159f1ae0ca1ca5945a5e06de4a201d19d9f7778dea4898b7af85"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"63d5992a7b481d62ea8b2289b47da6810b029ea4a320a5b57957e38c57654662"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"acbf8af94dfb5275ba4df8d66b1bbf248c35f2ea200f70d6935232c5753cf9bb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf29523ef2c8ab368b087cfcdb8053620a865a4cf0656a0b5de5d07d1c578cd2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ec428b9a9db444fc6b8bde241d8a7a43c6cfa702682ccd5b2c99ab5899dcbdf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"25cf349fa2a8b189f0d27df131af9e91e7e0a2e3884f2b48c8d5012bdb49e149"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"549d7260eb4d11c84f7abec291a941f2c02cdc84c61c995baab1f7d2f20d8f04"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e39f38f14bf4a751f1f35bfe3ee712a03f729c942a4a8cee4847d8592225444"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4ad38d4757d136a9bf7cd111143c4c53814aa6e7e9c5b3fc8e585bda5b0289d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"093167b9f6c5f61a5a1af6d1de3b4f16ebec7842dd5bec2c6e0c5bef8c535959"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a5f96ec52f1a2396567bda876df26113744f88da39cb8e03e8ff9cbeb99456a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"86d0ab0b5813df7345c796570f928a9a1853053ce069fdde71a4afb8744e4cb8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"89a31dd13fa6c7064e60232c1f3484273e1bd5414911db9ebfe18d9da155bfcc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a05d576d7fdacd6e0c1c26676599835bb8da2e1b5d787ae87206514bcbe4c7d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RevClouds/Case.RevClouds/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1190e3fa850b990fc06abcf998dfd67bfc22bbe4db6f6291edc38120d2b9d02"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RevClouds/Case.RevClouds/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"a576aa6ba68e2ad0f5897a621dbeb1618ae3aff7bb611df9ce7c6a08918a4107"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RevClouds/Case.RevClouds/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"008d944136e2be69dcc7d74f353fd67a97768b24d62b51c9187745946d499eba"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RevClouds/Case.RevClouds/Data/clsPara.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b274cedbb727d1f127d6d4442966d00befc6f3251b02a6b1a7ec91b1cb4b4ce"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RevClouds/Case.RevClouds/Data/clsRevcloud.vb"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"33f6aba9f41b467c72176b1eabd86a55e713326b931ceb2c61db2d6f27c90eed"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RevClouds/Case.RevClouds/Data/clsRevcloud.vb"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"69a834d27a396cf2911e39201a0528ed7c91a67449c60bc7f9bd1171a048da3c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"21aea7a0d6e4bd12d5e98f8a096578ceb8b25ce685454285e8577db4eb0a7624"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"29ba84c99a9159c9f15b4d8955ae7f56fd299f8e456e94befcda49bc5f70f7d4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"15011ddd20d99807ef251887796cd08f349940d4360f59ba3f11518f87a8d20a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"57149f95ed880fef721d8106b47dea7045b5ce41ec6c47fe450f88a8d8eba1c3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdca4e08b15442650ecf6329af13a6447928430e621c407deddf0e7056473075"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0bdd76950353048c948a755321c29aed2cf16995d3ecb97c3d261b74969d099"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"b11ce87234a9a1acadfbeaca0b594e71c0de979c5dc231324bd6ec76087cc2b9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3a985e3be7ee5d14b79362d4b50c0ed22c2377daeb17dab640885bc2613a623"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b9385bdc478d591a2176daf7343bc6518f5ad0815173040d12ac19667b67a60"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcb2b4beb7c77d13b0c7d4af74898a0cab34f1f7a1c4b8854479d69c76b54d29"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"38106e1c652951f1acd057456b143a4169047255057f5451baae924f8f51ebb5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8806ce9edeb38fa03089ac499e980b51434fb841df4e7abf6fbb33eb0ac2487"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"c753484d45e8c25e85fe2c8393049a2cdf24fbe2d5b7a949ba8d2c9942265977"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f480f92e845324db5833471e6f3fd30c441afff2dc6ae47006f78ae6662450c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb24199459b37cc497d5f3398c3991b46a6c528b702dbcfa5bb0037ddb67874f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":420}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe6c97641e1e552d0ecb9dd2f6225d1c6ad2f5ef9bb073e5292cdc4dd0ed3380"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Entry/CmdMain.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a258959d907a1066daa36ecc751b5072ac367910d2e72505a09b1b3da2d2c9a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Entry/CmdMain.vb"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"085d27755868f293da5a40e9b7185858049a9395aef060e227c2d003b41b22dd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Entry/CmdMain.vb"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4608ecd1759eeb1bd11b862f9f4edd70dce458edf7870f8cea74d83947a1217"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomInsertionPoint/Case.RoomInsertionPoint/UI/form_Progress.vb"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdbeaebd3c30e36b6c358d876fba330b25cf981e6c8d3229fcf0bea21a561148"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fdeee20ff7799e9ea57b9df86b1d576db973ec68aa6646a3ee2890245c0e373"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"175fe7d899af0918c2c39c419541216939233dbc47c8145a9fe22d154093ecca"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd83d55f1351eb63636442ba82c5e6c65978fa4259e3c9ab257699d3fcae66d9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"17b7f53cb6112ac4a03515a72ef16c7295c1e65e3ac46f72f120af28292d9a5e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b87ecb218106f7f6741870e08c343618e344b7a589886f2b8aad8d836a14e78"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"354fe2bd5550b45617b2033c786ea9f9ad140202c7e4fee4dfbf4efd222f6a8a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a53386ec0e3240a50e25383424f9423a791e08b7b7b1018231bc2dd7e07e21a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"efe55f08a9e4595e7851cfc13b70676e48f773bc40eb6e31faa7000e2a5db536"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"158e8681907f3496dfc39a000e0327b6509dc8ee699094dd95ce26694c876a7d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ac490683b18c672df57ae6c5cad984c7eabda79aadc57b382579fde9ef10a85"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b1b353adab2cf566dd22bf647b64e9eadd578bbb0cdfb86bc26d06ccb1834ec"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"88a101b30d5dd839a63eee867e676ce218057906c711f7ab9c8e190fe6c4d612"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"396642df5f1b4631c667b7f90fa2322b8166060986e62b22506c01d430885105"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"26726583ff71bb61e9f5b106f03f64594d88672ad7b282ed1b52e46df87760cd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"903e16d33ca612e9b44f432565ef9e6d4e4a5ff61a31b862ca317fad06bfa02a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"d58f725eb5f6c7c5d2636b28154e2463a3d767ab8d991be1e6b320b15a7427d0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2cb9a4afcf03d5985bbf45f4bce2c90f21955ea10f0bc39f27f2e9af9addb13"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"f73bfa375342a0bd637fbcad472a1e635f7af73c3c94b643db6831c97d3a2055"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"05d1bde95d1b607a86ae85136c1bcdc5916fd57ee545a3fa4a00b0f98002d8a7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"1122241d6c3fbcbbf80cbf404945760673398e95c35995f538b4af6bad8ae176"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c0be4654c5e66a336f04b33b1b4a815911c7df1cb9fe2dcc68e371be7b5bf90"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc8049fefd0335a63d50e2e6827bd5241bd393adf0e6bf5bb35ab322dd156dda"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"df55e1225b257b669da5edc3464e6b23d7efd60bbd14b1c81c502a94eac78d89"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cc915a9b56b7bf7f4281d6a4f6c3cda994f181f1a0703940210bd1dcad75ff3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/Entry/CmdMain.vb"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"98c493e6e04fd83efdf4d74ca2de4f8566ab2dfc7ea856cef61eda3559f49802"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd8a24db854baef44cb3817f86dd1a207e6cc78c1a6936a7402ef37288034187"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d6ff43a168727a1980b376f9d9276c04ee8e49d671dc47189143f55a539a2d9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed5a3d2e75a47e6375e6fd25a4aab33f8223ef8a507ebd58def668fb8fd2d1f8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce1f27edda7abe837e082c444c3d0386f2c440bd50c948794c31d4f29edcde3f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"344e71b1d504b7dc954f9cb2ccd7acd5a939b52a8b7fc3147ef856611f964bc3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"3508cedfdd13d23d34f18fa84068a6463f6e1a49707f0f81c211dd0c10d272a2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"50c0415a5050633f58ce744510e6fda5ffec1dadee96baa5c47226e987471c86"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.SharedParameters/Case.SharedParameters/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"015563e6b8011220d7e0c7410c88d7fecd291f34b21aa3f79f11e279463d6d2e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.SharedParameters/Case.SharedParameters/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"02e53123b95ddcff8a759fe138b458517c38734d43aa928a4847ab126e6757ba"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.SharedParameters/Case.SharedParameters/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"af2d65b404dbbbd39a024758ca4bf957ec5523c6d2f129a349cae91aea180ecb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.SharedParameters/Case.SharedParameters/Data/clsBuiltInParameterGroup.vb"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf2826cddb3aecae9146f8e91a24fd3165f6dfd7489de9e09ee1c28efe2782ad"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.SharedParameters/Case.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"39f2100cd1c62da7f40c851d81b76f56b4587831a0d6ec0d63cf333c8af9a2ed"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.SharedParameters/Case.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"890e2385b9ff143257293695464a8e875dd10850760bfe187c5ca89c9a7cc5cc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.SharedParameters/Case.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"81a1c79f2407e86d0a96bb956178076edcbbe95b3ccf2e3bcf091990dc8626f1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf1e050ffab58c749fd7cdec6d2be4baa1150c31c725b6cf40a19073ced93703"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce72821d8c32fd063e5bdb061e576864a5258f66e5d8b988cc5963eaa85d2f00"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"44a22f20d3c03adf5a93ac0e95a4c39ae96ebe6c019da0034e8ce70d55cca768"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"be7b4579465ef999c3a0fda9cc562f90a65558c081d2215b00662608cbea24a9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"621509bace0014066c98909afc9378f88dce449fa9c8a50910eb816f9f9277fc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"98ebf9517b403f97766115d7f5e1755c64e8daa1daea0d639a2e6bfa3b14b05e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb7c365a31c7d95e3cbfb1f11a4d0fcee8284e2e8f4a7ab682d6a699934459c9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"86b7b2dbda413ef30ad36690ea244798ca868f17f5c752e91c4f03b694f2a7f9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"a186e59ed729e63157ad97811caa7d691cb4c64b59192c35c8773a05034bbad8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae0639088c15c48e705ab61dfc6b7c4911a000ff41c02843abbdd677e26f638a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1df46166e00fbf7b9c31425d3201ffa7e1245fa10afa6aa9bf2c69be87fd43e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"f63ba89cb8c54267950b70234e3f89ddaf6c3c4592045d9bd3a6b5c6a5cb35bb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba812b99e5ffb259350df8718f0f6f25708be97246d7930727adf79af599067d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc2dfda9a4aa6962d04119a2ce5b949e7c63ffd87f4d4c8c5b95471cdd7f7398"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"e46a76de2545f544729ba287be846dc4695d563e72ef913da762bdc1eeb746c8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc2e8544669209ccdbe1b5923868a5a9943d2a28f66663aba15059fad71ef346"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"04acad84388c71bb1d65dfbe7da463ad0e7bd1b8332b5a295cc341b1fe5796d0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"c841115d94ae6c8cea350d61a18e8b1503ac1d6de23e14aff1cbbe15081d904a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4136fce7299a0410c6567765c12dbeef16198b37dc896de2f7879274fee5281"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsViewType.vb"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"b077119001947ca142f5bc85cff9b4a60fd8c655f2548b7d73777464b404b5ee"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsViewType.vb"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"645ae6a9bcb203e8805f253960d0897494da713545efa8e65acba8af0bd7e38d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsViewType.vb"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c7682dd3c8e66c42d8732364668350e3b8031ba979147a5e9db254868beb495"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsViews.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"59501abf80d9ca6e4a4681878f5bf4c63d1ecaa0819a9ff009160f8b457d0d91"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"0990aab13726e2f7c4692b5e390d358417a231c439869986bcd11371e4c19cbc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e04016fb8ad7d778100a83924fb7b605055f65f6ab13ab87bef42ba7ff3d4a4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b4879ea30358da74c22ba3b4dc667846ddf9653790ecd52b05680b9232ca8bf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"f810e6f91e1282cb7e59e850946d5fc0a02083fbd227862494cbdeffb6a8d26f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"514d9c28e18841cdea8f1e0628a70ab35dcaa344182203294b23af386ff2f1b9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"24a41b5a1848779b9427ca4456a84f2181b4a543d640f9b370607f2e48d98c18"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"7253c154445674335b7169e67c4feed84451b30b6aae6e1644a0ba3c18473990"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"88ecf74527484ea36a9877b3dadc84883df9bba066644c06ce6406a8a5055458"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c8ce70e481ceb0017c617cac6582399046979811a174508a32948cbd0f159f5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6fd3a891225d04d6842061a3ef8c9d32b3b400e58fa50765feff822d3e28c5d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":335}}}],"partialFingerprints":{"codehealthFindingId/v1":"7462698554f25c31cd213a1c47f2cf88c71b225d4017c0526d112d7745cddb40"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7672f94ee4c649a86752e9078fbbf31d7221a2983780060592d83e61ec6d580"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4f9309a142085e733187027f2a24faedc90f98feb8077132d95f23cfcba198f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"62ca5c2a051b5a948ddc0043a6a795b8578ae1b87a49d7b0c032dee6c8845caf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dd71b285f59cc330f5315067442e6cc39fdcfaf9c454cc190b35121a823823a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"68643898ea982ecfe40517d243b492e4f05a91c4f469cf76928539cd568e3ca6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"f52ca90024b2e7f80bd89634081f0f01b0ff331750d725e55a1627670d2ec03f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":502}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d326ec5435229d7e591e51d17d95375344def43bf5d1c81d93dbf21c0864b4c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":523}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8abd95a37dc2e64b2f480fa476470246fefb35ee0dde07bf69b4b702682d162"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"078bd77c9b289cc30333241207f7fcb43e9d71e7846338ec2fb04e2646004482"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":565}}}],"partialFingerprints":{"codehealthFindingId/v1":"eed9628a877cfdd0dc1c55cccc4add3078cf37abe2d36dfcc2cd574529d644b7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":631}}}],"partialFingerprints":{"codehealthFindingId/v1":"499d829057d848eb0e93b53bccd26a61a772e7ea3f36e8862890866076ae4f04"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f32ac720b5ab64aaf94aa9562e33fb80a8bff54f8373b07e29bdb5d95dce5a7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"d684bef6e80dc81ab90090964c3129e635f64d6e59d781ed97997c665df28e1e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":376}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbe0615760c6da7465c1941152106f203e89d9a9e60b51cdcef73d963b803b61"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"b55bb77105165d720c9f8a7033c3f8e3dbba191a2cb5f7a370fcfdc2f370cd41"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":397}}}],"partialFingerprints":{"codehealthFindingId/v1":"728155849401c8af57a5d6da15da6c95a33365cd40a3905b419c502c4ae5dca0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":424}}}],"partialFingerprints":{"codehealthFindingId/v1":"c36df63e36069f0b156ca0e94567519898c97f81451f655ac78ef45b2dc2f011"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"34321b830fdef48b623236877190236b4f9fcdc5d807b2b95ce30079880e98c9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":458}}}],"partialFingerprints":{"codehealthFindingId/v1":"809389bd149cb8b757ebb19a16782768f98b6a5737d9beefa5a4ed682e5eff93"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f802f59094290c3bee5e32f97557dbfe200298786c6d91f4966a74e0d8465ca"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8f439e4411e4bb9c7220d327e7cc68017a3492c15895928270fd6854e46c5e2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":577}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccbd1a61f47002ef2ee6dbc260e4197010c63ddebccd2820943d1925d2f91060"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":583}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7659423e0bb3a2fb6f2b3c4762297aeb071a7fdd16289b855e482633ed25fb6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":625}}}],"partialFingerprints":{"codehealthFindingId/v1":"31d5ba6e3e65dca2bcb230c358154ae3bdad64186cc86c0b931d91dca6fd7016"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":690}}}],"partialFingerprints":{"codehealthFindingId/v1":"503919057600336cd59bf156deaf69978ae62f6f56adf2a66c6dcc5d24052115"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":814}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0bb0d399ba8018392f7a4c1b7fcfeb57382f741dda1d686ab232709723864ff"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":851}}}],"partialFingerprints":{"codehealthFindingId/v1":"975351135f543ab70273421984b59b807b34e561ea09b2a6d5ac071c0e01f604"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":1043}}}],"partialFingerprints":{"codehealthFindingId/v1":"7aa229c8a1abe3f14c72a421f0e13775e73a3bb2769dee50ea70a1ae953ad473"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f80ee0ce3c1223be44a49268c797d3c17b66e686198f949b5147eaddf88bd15"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"32684de00e7fe3c0fe986c901dc47ad0fc4764fb026bd3a67b0ecf574397c439"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d036dc7a9377d537f9e1f146fe73ef23a10dd516c83750d6ddafffd50962e2e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"e84d7c5e972c3881fa8eb2cc6c813d22155d25059fcee9f69dbc2326910bb3e6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7782c450b1189dc3b7d51feb222bd494b9c2c4e0ddc5b5e539a7e7a74d4498e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2683f731e21294e2bbd7c1f83ada86f1fd6b62c4578a9933e7f0bc725fb9b98"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"774076738002031845a625cf71a43f4b87ee7508149626d2c3f6c5e0d9409d65"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"200acfb41acef17ca46993ffd1a67662c7a91a7cfecd0f25f4eb64e5cbb7f826"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategory.vb"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"223a180b23b535ae3386741439107490c9342b0caa0816c278e5dbd7b4eca488"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a8ae67dfce97554814e268ada2c76c8605c0461c62d65559d279886df140445"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c489f3954ac22805896dc34ca24ae8abe529ee8e8785466febae90206e818ff"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"782fe311c49f9e49787931ace39ed7c06e743aa7cfeb265ade28e13ea3520eea"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2aa530dfb4ce12fe9cf9f8573269e6881a111768de199490eab2de6bd65fd92"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"a231224c63078dbbd297c1a0a0d4b27ca9911edc4a94e200fff8f280b9f89103"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1e553cc8f4dac18ea3b6dab0b55df14d3ce2e940fa86d4b6cd19da4161ab828"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"75724ec6c6cc4b1b5d9efdaa5974e70d49e413db81a8c369b2426bbe5dbef7d7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"29a7ba0acad5b1a95e300eeb7823eb2132520d7316b7588cd9a5f3b4d0f3231e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8ca7b123647ab48b2f48bdf84af48b113308ec1d6ecd655465d91eabc5911f9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0a3c82bb2df47def3c4c137250b758014bdec7159757f985c4f946cb223bb7c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":475}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a11411adf834cb79c5f93dfac2f9a39c6603282cb2b8ea364b236e5ef34c3fe"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":486}}}],"partialFingerprints":{"codehealthFindingId/v1":"9240f0c5b535a80e3cba70f4a1957fbab240a0c61b741afeb2addab3c9efef82"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"34458fbac60464f27eb338b254625e7cfe9927646a778db910f686142819120c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":525}}}],"partialFingerprints":{"codehealthFindingId/v1":"b63a7d46eceac7bc7cea5dea035733a3ee9b36b896f8eda96681785bcc842748"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":551}}}],"partialFingerprints":{"codehealthFindingId/v1":"c04bfe0defdc956d2f99f71bc266ee56345dc5feb9848f79fa51f9d18d77a135"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"419bc6580359ced8c73ce9bdcf9763decce882096314590006349d8a66c37005"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":569}}}],"partialFingerprints":{"codehealthFindingId/v1":"43627fd78e89cbc96d194630a8a2d1b812daa7cfde63e892537f1ed386000926"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":602}}}],"partialFingerprints":{"codehealthFindingId/v1":"525a2af7989ffee66e2e3e87eb484c529058fa5c35c64c2041af4f74aed8a918"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":607}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a48ecf8d2437e865fffb0fa7a10ea59e042a94c7c5673b769e4e75467babe95"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":647}}}],"partialFingerprints":{"codehealthFindingId/v1":"20efc30852cd4567b9dd974637ed4e7b0799a78d6dcc87e8b53afba8b2a6544c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":669}}}],"partialFingerprints":{"codehealthFindingId/v1":"4af385d52a3eb384202db39590d3efa0009ffd6588339162fa45fd788ef4a168"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":698}}}],"partialFingerprints":{"codehealthFindingId/v1":"2948606f9d090e1323cd12b4f49ec1c1a3fd65f0332a6ec40ba61c1d7712c326"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":708}}}],"partialFingerprints":{"codehealthFindingId/v1":"086994ce63f24b6a5e44e470a597a41e6c2443b160fdc4451fea278eeda9f7ff"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":716}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c86af66d9baa001665e39451e80b20444b4767c72b3566d68e73232cb9e9ed8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":749}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ea704a8ab082f1aab0851f364dba3282bf0441dc382c444d711d867c026f453"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":754}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ee0b3dfbaa348472226635d67464d4ea8b3a759793be85457a9435828ea362a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":806}}}],"partialFingerprints":{"codehealthFindingId/v1":"110f90dda5b14484ededb505695eaba82e88029c3fd0abd0267ad00d1edc8d4e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":825}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0498c6f5985666fa1eaa71d2a805ea3b593c8572c72fadec41fc8e78211e7f4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"2836409b1e2d73ceea5cbdd1e0cecac1be3523edfdb20890455529e49368234f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"4803adb0a6259aa02688bd551da107cc32360b6e8a8e5eb4c8290ff272c3cf12"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f6d67e1b0dfa61f747ac285cda08d902283aa2ad254ea0ab8b598d844f3dab1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"99955cc6321867140697f5f5b3016f49775b7afc461a13a6e39597c457e4e11d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"954ce1190d754587d55cd79270ebdb5a09d99c644d5aabdd70a4d3d423239930"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"b915f425bad7c36cb8f64fd2e7ab8ff74ab83afb0ef2a89b4df3a7b321cede86"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1bcc4df6129c7827d5338bb6af6a986ccd66fef213f276e9ee8c3e76d4f6885"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"84d19b7de7b03e3137f53dcff90c52c0508b9ab4acc5d32a0c2ea10282e6192d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3be1cc910c10e1b11fe9dcb72a7414acee89909c416a8dfa293a29c6ee058ff"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"773e870652d071c87d0993d2c9ab038613016102d7b61ef25b483810cc8c39c3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1c0a897641677ccf96075e754e353a7b7313f22dc85c25f047d7503dbcc8361"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ffeedbc641c854d18c70691f7b47fc5cc4b4f29c91cd39b5c454373154e65db"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a03a83e85be355e323da76eb29fd187565464e75ab00d6e5e02fc751d1e3561"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"12b35933f0f5e7752036f9be0d9ecffa1902eea0f001f145abc8d48cf68751f6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a73eae01aa05c9abddd3fcf2ac53679ec8ab25c92c3797c4e673533b4fd3f8e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"800f043c275193c3ef99eba7ce6fd0795316d638b8f3c98c9fdb117b6e9b13ee"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfb86a6644ad7f590a9333740494910bf029ec89a75f6b30c95b5e656fda3dd9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc9cb531a4737039ea30aa0a6dea55501b1ba15e0387a32b5ae12f01f4148f9c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"5154c31bc24f58023ba885ceb066418d937e87ce12dbcd94295115b69258ed56"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"59ecff98bee5aa588018af838684ff76096dcb5a6871069f5863a526af30fa07"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":407}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bea02a68296e5b957f7ae2a8e1ce06aa2aec5b9662c504cf16dfb593530d7d2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":434}}}],"partialFingerprints":{"codehealthFindingId/v1":"05ed19935f36dc0acf902533d3c70fa1ae59ab09945a977803d2ecb3769315cf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e8e24276d8a5a8cd2f372bbb8a01539b01ab859c4361fa5b2ab5852fad9ae38"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":462}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ca1f30bf697201f43171020e08c8c03c6c76621aa9a0f601bce7d3e7469df0f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":526}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed9d01cdded6d701265006f06e976a36d3a998e87aba1a1512dccfe1d3751f87"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc43c89d9b5965a6a3d9b9fda111652752a077546be88d4b8169f87facd7f659"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":612}}}],"partialFingerprints":{"codehealthFindingId/v1":"c904795a5bb97b04b1f85c59d9d7cec3444611f22f9406d725241bebdca79475"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":633}}}],"partialFingerprints":{"codehealthFindingId/v1":"36fbb355de1b968022e0826d670b0a68f9c77eac22ced525328597ce586f2a9d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":654}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d3f0582ce2eaf3f2d7efa3a452f0c40c70ab2b3966fdbbb879fba833f2f33b8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":677}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccf9cec37e855596c015f07147c9b0e438d7b90c51283d67a31dd6a7980f8a21"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":721}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cbb1a83c2f996c3852a2adfc63ad5e8b3ed95ce4af0e3c8bf5785076f575fc7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":811}}}],"partialFingerprints":{"codehealthFindingId/v1":"66bf8a51f492839e17aab42cee16d56224b195074baa2fd774542a6a0f9efb7b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":879}}}],"partialFingerprints":{"codehealthFindingId/v1":"2611c5ca5a86a3d226e5c16f06297780c1504ba9cfb82756d84845f604f8696f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":899}}}],"partialFingerprints":{"codehealthFindingId/v1":"452a00e72d727b60a131fab5ca820a9f1fd3bf5bf1de762f5b04d4b1770e6c43"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cb9d60cabf6b3c3b11aac3c257659117e902c68518219a6c02e0e708efcc802"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b0b0c7e007b2a7d8f64f8b2cbe989c18fe281fb29f49e4d0b7ae1adda638c9b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a4575dd7e6d6c565d1a0e07a1df38a1b094a67c76be3496e67b55ac83f088f9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"cce438ffff82f71b195da126ecb35c668a2fc81bc3b2a55996214f6ced5342d9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e7fefe5ea0a08b0d6436a3e3627c127aef304fd1bc2c30ccdcd0cb48ddeb816"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"edc7e6be9180de7fc2036215d16f6eea263eb5bc02b4f2ba3f15b3dd84b671ab"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"99e764fb4b307ec7a28b917c2fe77b99ab4c64a6ccece5ca803610f70e481fa1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a40051e32b61d693fc4f01e4879366e3e57a1189d835028a6bb19c89047f776"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"d00de74438e4976eb747db04fe168d12cd81f2c1dde305cdf2d65b8aa8ebad21"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d97e144d62c4f1ad911b28ab33d5d431e15e587353456122e4f3bc429679227"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"03c880499641a161b7f145e6fea40c4ea852c48ec13051c7400f54470321f24d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"326f40a64d815c724308f6f77fa89b7de7f96524d2844434ecedcce12d22c5c7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"986dfbd2023c7efc5a4e9591405c8dfb4a674dede8fcf9a3b35c809b32b7467d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":356}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ca815a01b995cebb2beb6a20d37b1be9dee79ed188fc3120d05a114c409f4d9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":359}}}],"partialFingerprints":{"codehealthFindingId/v1":"135a0360956858a7474a0f375e2660b092e1b1b6e5a610852c05c3a265e709ee"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"6504d2ca8bac741d09c0270afe5dd4ff172ffa213e55153bc2d3df2509d9b9db"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a23359e3dcb27b335a44380d8871aa1e85a9e4d80dc7d30463e490f4dc40d9d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":496}}}],"partialFingerprints":{"codehealthFindingId/v1":"99dae6dc104849e3c145d41891fa8b8781c5cdca5317eb795eb8895552a62726"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a4ef89db4e0684e9787ed50a28e57e8715ea268447c8cf3e5b921c57bdd9760"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":620}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc84745c8e6e1cf235db1acc38c7cc3ba4f11270f4310c6e12f33f7c2debf1b2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":627}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1a679c18021a9136691599ce35b9af862c613bfe4eaed3878cc8efcc1ba331a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":691}}}],"partialFingerprints":{"codehealthFindingId/v1":"e19a0eacb5504797095335445f43010b567f133ed80a5225aa2abebabc04d2fb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"191700b091088f99238b61dfb3aeec89f2b129ae97d37933da7e6fa15a7d59d3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"4007872a5c99e0a33426797deb5e58d0e48a1d50de9c22a46753b64886eb58cd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"de82113f851d8fe80a5f3cb4b5990dfbcdacf5d8d99956306d161ca48b952707"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d3d39c286d0f45a391bc0e5a1e7fc16ffeb0ac89bb227580657cc435ca1242c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0dfbb578c0b3a0fe21d67bea9f94ed611c3125cdd264a538046aad7d1759aa2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"77edc632d9fccdef1ae9ba9de4d874b5ed4a19803c4e4982fc5a638dd1d46f1f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"7349ef6dfc529280d66d47f114f3fdba1249d317c4c48b5d4e5f41666e763f7e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"b921a06693341ff7af31fcb1bcee7f7f06bf6737c13bc1148700af76d3ca098a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"f41e90863aef44d3daad8ec68b22801a8196abca65a4f47f45eb9c9c38928451"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Progress.vb"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"16743ebd51ea1dab28c0f246f65598fb99501990946b313d1b59880ab36d2048"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Progress.vb"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"e449723f1163c61f92ed8fb527e90a0dd547deee7d123b715cb5ab838296f0f6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Progress.vb"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6c4cf00164b7b0a49c953e89a15fdf9f72ceff857adb3bbbfe60491b277c97b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_SmartSync.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"337d2afe5a3c8bc5317b77b477defbbdd4b2cba02452e68a5063d405fe955296"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_SmartSync.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"778365cc79ce2cfa52dda1e736043e6fe4b6d3634374d366afcc3dfba7f123ed"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2147021c3e5b46f4561bcac8b94b96692a75a710718d253c11b9b7623d4469d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"60a4221883cc09bcaf8e764d4a90bcbd434e158b70cb16c83d2e2c7937e12f96"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"df3346b6609d6b0d3b88883f4c3a210940366b560bad88e60f69f6c4ee727aa7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":341}}}],"partialFingerprints":{"codehealthFindingId/v1":"ece8171a549bdb82d7032a418dced9105b202d2472ca52a1208cf7f21db5568b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f46197d4c6ba95787221f3d457f4dd7c5946bcf95bba7a8985dec516b815c3c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"b165d7589857560d776e8260e76f1b55f214a01e64397b81c7ecebc4908f9385"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"93ed56a236cd788d1aa8e398357d9d41a1d93d36ac6626c8338053cf1fe14902"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":395}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f78a4003e6e93acdddb08b05678ad3b82a52002993ada6615c75ade71c8b976"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a2c3168916634673a4b227bc0da9210e426eee52ebac7fea8f4ce2b970fcacb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":475}}}],"partialFingerprints":{"codehealthFindingId/v1":"c34b8f420d1ac05d1c7e2e43daf683f37d8e82c4b89e85ecae9baa56e6cd3586"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":512}}}],"partialFingerprints":{"codehealthFindingId/v1":"eede58972653d0b7cd587535fd425e2399dfbb48b65781cc813beccc6b7d5ff6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"98af4b7843e74e7ac37836b71fe98e13a2226aaf5430048ab1b52d7d15a3da49"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":558}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce3f934b31f7f27f632852eacf5bc5db050352b26e545d1004db4e501285e522"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":572}}}],"partialFingerprints":{"codehealthFindingId/v1":"682b28986567d4291fa58de87c80d37f3d68e3619ffe61970e0007b37e665ca3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":635}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddedfc3b5f87c2f00bd42dbb979efb24875c9435c0ab9c079ffdad2e12529613"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":712}}}],"partialFingerprints":{"codehealthFindingId/v1":"2edb6dfd0129a523fbb1d85201f55d6e6c69767bd87c469cdbaf01abca8a72f9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":798}}}],"partialFingerprints":{"codehealthFindingId/v1":"1533df0d2dc1a121ed7e19815e4d1bc36dc7bd702174cbcb4c0fd992f4668a73"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":821}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc684386d7903d7b252f6de729e87ae887e31d2bc171b766559e9e1430a58e5d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":837}}}],"partialFingerprints":{"codehealthFindingId/v1":"e75d4ad5d2d15033ae8087b74cbbb379dd43623e0469e6037159c07c8bcd0396"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":840}}}],"partialFingerprints":{"codehealthFindingId/v1":"1541ad232f77630c831efe299abf1def2d51b2c8287eb00c036aee8a473b602a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":855}}}],"partialFingerprints":{"codehealthFindingId/v1":"488d5cdac11134956952435de8c2e7d6187ca6eb6aa7f04296301a2ff79ec793"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":858}}}],"partialFingerprints":{"codehealthFindingId/v1":"a12723248043351d786413756ad3344d71b787cd44cf07fc9ac1f17fa8c257b6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":873}}}],"partialFingerprints":{"codehealthFindingId/v1":"1418bc06db4566f25a6f5877002ff370de6a2b27bfee3a76080362a9c78e3f42"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":876}}}],"partialFingerprints":{"codehealthFindingId/v1":"79397d98f3062f1ac0b3f08017a7335184313dd92fd765d592d7fa72b6c7233c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":891}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d593455951c1b3261c63114918e42ce8aa4f301a5a46d82df4474886f24f5f7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":894}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef631a4a767640c312aad90e921e67d303d159208225e2ebdb797117a2f813bc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":909}}}],"partialFingerprints":{"codehealthFindingId/v1":"724c3b9d018da80bdcaa8b1f1c979c8baee48ad834c605a7fb6e0d84c51657a2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":912}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee7b1fd2c2486b438900fc5041478eff1e33b20d09a1bddbcae74ca7675b6988"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":927}}}],"partialFingerprints":{"codehealthFindingId/v1":"74d47d4ffc38fce31d8149da8f10a0225bdc01d58ddb1202d627a506c0181b93"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":930}}}],"partialFingerprints":{"codehealthFindingId/v1":"adc215dcd36a41ff1d4640f34760e36cd5a6f7cbd3c3908e181f4284d3013113"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":968}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa7c68ea0876d0dae860edc89077bd80d44118daadbea12adaaed340f167242b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":988}}}],"partialFingerprints":{"codehealthFindingId/v1":"38ad2c9c148d556e7639e2f57bfcd04066546f3dfce495194bb7b9abd40808fb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":1015}}}],"partialFingerprints":{"codehealthFindingId/v1":"18303cba43f51980d1eee963b13e9ba43cde2554d18157594a5d216958a8c3d6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.KeyMatcher/Data/clsSettings.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"a077ced70132aed5b17debf14e61058163f3961cd841926976c49d33a083f5ba"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.KeyMatcher/Data/clsSettings.cs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"52807fb4256f0849f13c183d4e4f2f545b0ac6a852c4abee0f232b79947f50ee"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"d187240e0bb515b57ebf14eb4a43af86537adc65a0e5ba44088bf30ad1526b36"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"d386cf8fb25aef7fd95cc14a85fa643b23b1bc169558ce068807c0ad25a87d4f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a151e05e2ce05cac29f5f963d1f2748d0076ff14bac7b40dfdba8d18d4687f6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5f67b4edabd174d35d4a368391ac6999ab7fde22ddc215b791b2fb521892635"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsPara.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"c216807e5870aab40cbe13c9ad80c1ec7471e9d538eb1d71741c3d53889e8759"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"5eaac97c1434e4698e562713f85baf49c9778bc6295b26976e5cbcbfa825bff5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f9efc050fc208a39e6d7b2a5018a0961210a08ba77bc9bc7a4ec2be46405f66"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"f29202023f007206dd77a65808b8b4c5e48fd0b9774c9a4057ce26f021069560"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"166c93835bb11274d0dcc83e271dd0c1a29aa23e12439dc0fc97c96e97b91ae7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a51cd60a8a6ffb72e96d2f5f81965845327d774a16a9b5d567fbab9b77d705f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf264edd8b855da406bb82aac8aa9dcab3e0d7eba5f40aec50b5d98028685569"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4951615f6bac5190b64bafcbd337e73aefdad56afb10f82f58cf1027f168207"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"430b423adbe41922f31da7ac23202e33a815ea3f867a4324d61e09d86720e8fd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"175919812701409157955d29ef8e4f1fc991db356685a26ab49922c29f84be7e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"8db3fbb0c9310b0a5809327b4fc692c5e03ded1472cf5001ed9e17bf9f20cbe4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"70e13f76a8f03a6c32e9d7f229a4276313286e8f87e6d98209f8ccc19be92a1d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"de456700663910738f9ff3b068d49251745de6b1cad66a84103e5fbc0e229cea"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"e81c56f01ecb0f8715c3a8ec2468943a235c4d56214a03b317c93ba1399509d1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b6e4b8bd4ef22cb65ad78dd1863fe2ea2d769816b7fd808fde3a3de02082730"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"28deaf54762f53cc795ca062efe281d38a16739ed8699e40324e91c544895732"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"c897a0957eba756e5b18736f8b3a1d4d5eeba9ec1140970acffe81ba41eb4f6b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"58ff8296fb2fb8a7cb78143ba0d25428abdbf105c29bd38ffd54d8f27dc08c0e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"e050e11dc69fecc761b047ab5d55ba2de072219200bf8fc3ee6d56347248d2d0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a42cc4ff5fc8a5e9694b5c00084c0de69e0268c92b3fe7d56d5b71fef721f2f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ee0ce6db74456ffd665e2ca790587e2b55d744ec4f4f809b4f50137540d1012"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"25eeef43ea732f3cd69855edfe78afd4195153c19e3e71834a60e5d7f4e4ab4f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"20cc0c69b240b21437d3e871d455276579f99f49d64fc83e2ff2d25564644535"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"e802960003f95243198afb8a4a6a0f31973b36b068055eab4b595071236b0548"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbc9a8dd82c9fab254a17ed16310b2554e81563a13c45b0a43f156121abd4ecb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb"},"region":{"startLine":416}}}],"partialFingerprints":{"codehealthFindingId/v1":"98e7e1906b5ccf29b6c0cdcc13c10f35055c5df8d192519b89d3cde4cc8b46cd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSettings.vb"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d95c06c5c3931e931e83ca3f75350aac27a045f05815a136fd09a1d5e317dbd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSettings.vb"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"64b2089f23d9d990a225baa1f71e6cda007ed04cdcf08e8963d2c23dd230d685"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSettings.vb"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"daf92fb79e42bde7181c7974626f166f1aa416533f2e8413b7891f9b49bb0976"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSettings.vb"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"8114b95c2333fa0fc302691420e456ccec87b07f62883ea4b9b06590bfcae0b4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSettings.vb"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"51314a8300bba45f2e0fd7c9c25c76360fbc064ca678ff2a7b3045506711cef1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cbbc4740e58f27decacb8383bf6d90f1eeaa034cbade8c28bf0447749b1042d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"8765fb93018b27e54df27f294b1c7a4f38d91236fb70d9e78230720739e5c5e2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"357ae8696dbae58058c7d4a5627459a328c9fa126b8d3ad0a9a87c3f511e2c66"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"1897fa6b19355474754a1b2f6c0a51db48f527b4966e0be2a0c1941fe41c320d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"1590a9e7bcfe31d1404fbac8e90fb10e765993ccc1ad649f3db84b6241c95b6e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc59396ab8bb7ac37c0b4261ec37bd91e1860376e1f0be04d4deefbbd283f017"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"5acd74510db959b84d2433a16a0887f659763e718d3d8f2fe44e57233cc7ae8f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d8a5568da7eecf49358ffce02656f7a043382a86729ca56691be5f7abe1f77f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"c186a41e9182404694c7c31a04dec613d131cdf5b9e1413445a9c25dc93db72b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c4080a6a6899dd84e84d1e89fc38c05be9c6ae90c8081fa49d1745b4d1e192d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2eff67b0f4688bda92374dfbe228271ed1e95886ea764ca5c7912d05eb14b5d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"37eb76b9e3af4c22d5698a9f7757594f947626a0522add4055ed0ac98496525b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":440}}}],"partialFingerprints":{"codehealthFindingId/v1":"740b106f919ea96223e62c01a92e87cda323d55c960d523ddfb8e81dcdaffd75"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f63b147d4e224b51737775406e0d93f02411359933140d3a443ca189620799f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":493}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4522e563e2bd09b52cfa48c7b7c8d3274d286840981246011066a0a4e1ec0a0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"7762be8f01a73682f92c2e4864512e146ce931fe12cfcbb1d366212c94264ed4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsPara.vb"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"e57baa62ccf1072c1cd9f91fc01f633863aca0aafedb6979b5b7ca104fcdf39a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsPara.vb"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e87ff6e3e46338219f2bd9da6e18903baf66901a1ef021182090dee9699b04c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"28866fea086cd0dc63ad53ee252ebb34cbed4a3878645db6b912c6f17d19972e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e288fd28711f7737f7bf7f7e20ffe96db44d3b58448b76a9780b9883b1f4e61"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"8048fcb427521b2c87c9cd967f81fd314db28fb83254845197af0eab7e6852de"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"767e2e3919a9c13e9c55e444aa6a1ec1bc2a409d11696a984a40487fc4a5c3ba"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbf248791af366d2fcc5c25a5e27d9bcd52e596cd9fddfe4a60487612c35a970"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"e812040539807099736d9a7f07c35fb676c3392b01d9e5e82d8b79ba61316db7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a2c5c4a18c31d9a7e474933de5f7743017dd5a9f7f1d9b5ead6f8d750c0947d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"efb396cae7aa6ac882113b923545e50ab74efd9881a3e1d130f46ad1945dc648"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3741e74b6bed0fd75996fb8030750d5eafa8b2abb0ac31e5168c5a3f31c15d7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"0515f0a68442d7750ae110aad3b4b6088204db0e1079a225bdb18830a23014fa"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"51987bbc4788152f50cfd92b02edaef893c355fb08af06347f4b99f018535a62"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"5abc4efb400f4abbd697ad73a22c05bf3924bb024947afb3a8910d97ad79ade4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":448}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7c8a8a41134615571d7613940685cff09e94462e87c44f25a7bf8ed5b9d733e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":456}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f848610875b599d6a071597d404fa203be77c77eb5b851566c83d9a4214c809"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":495}}}],"partialFingerprints":{"codehealthFindingId/v1":"f43831c8d4c9a51a986145164abfac63cbbfe3ce6f90c0288e35953c658e505b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"6aa68995376f9d9eabbc01b0d5c89dff42ad165e4bad1edf1ea32bb62b0783d2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":553}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b6095d2028bcd0df82c5bc3ffd898cc34de39b2992cd2a8cc2bd89a9b3d9082"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":583}}}],"partialFingerprints":{"codehealthFindingId/v1":"eaa6d2f251a869abe34a9d119033a645dd31c8712ab890eef9556762a4a98408"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":606}}}],"partialFingerprints":{"codehealthFindingId/v1":"5211af49f6dbea77bc4e22a0849a796028ecd9893aa7e47042587f2e2c954849"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"641f70ebeea7524e7046bd04df394e1ffa1ae2d16d5d567288d8960f67ca18b6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"eaa8ca74cbf4b3752e2915fabc8720378126af99750342a81c691f4cbd614cf0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bb867bbf17988196c0ba3d7577dd866fe9683bbee18f08e3811fe6858e03f52"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"60e431aec4b9f99b4a975535a414cd8f603e42f9e89546bd074955766d43ddb0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"268d75a597da5e93fa050242d2df294d2ac170c1d5a6840aa18d115b3c0bba62"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bb228b9ba6b1b1d5e25f16f38c21dd2962f42161d5c0e19f902d1daacff442d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"77457f651861c808d41bdc3df729f56647f07c0f87f633be24cf86a60ffa67c7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"d388db5c9299b0c9a519e739a236486720c17b33ac42ee2564238ea12a90e022"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7a9b7e8c08aabb2940a2d511e9911270618df232f59313bb2cf5ea91de82c82"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe583baa7c82f57705110a4562dcc332d1d53053c239e36a61acaacfb7ba6481"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":396}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd1d1e5ef5f24c9c6f58a797982bff4dadda12dd12ec4cbf869555e4337206c0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":431}}}],"partialFingerprints":{"codehealthFindingId/v1":"c06ff9e19050e8d0b974f55f1b77f1b9e6098e30b83c96fb78a5482c05fea1d0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":444}}}],"partialFingerprints":{"codehealthFindingId/v1":"46f0835b770776defc5c44d3630320c863b1f1360f0caeb85c914a1c2a3be7a2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":473}}}],"partialFingerprints":{"codehealthFindingId/v1":"10eae79839fb69af53bb75f5a2bbeca0c82863b09c837c76b419738b413b9e6d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":512}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc83ff27d2b01a7ad0d63ba15ad68bd18079240c6c0bcffb61dfb087879bb581"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":611}}}],"partialFingerprints":{"codehealthFindingId/v1":"58c42d25d4df0623d2af03790138c29fca6927a17433d79baa28a3b720df4b1f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":619}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b506dbe1d5ef41f824da93df923cd4bae1eefad11d9068f3b43ae9d099ac5f3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsBuiltInParameterGroup.vb"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"aeb2d79c89650983cb15f9efc9aaadfd65a6a5bbc2df7d95d0299cc7d6fcc7c4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSettings.vb"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcb7bfcbb9c19c667dc20cebc7eabd4842026db5490ff4f384415a3dbc050ba8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSettings.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d1f1c94017d8524bec9f256d0c4efc19eb73345e72174f69cbd69c171b8d64f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSettings.vb"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e89b3701a3c84185197ffe119b98824190580ff6817889c1507e2e568a900bb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f97f5117e739b911f84c8affbea87992df0a1acdbe329caee14d1211261f382"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bfbddfa4dc743ec692904b463dd71ddef43da063cab18c419b551e64c00b174"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"9707b3e39077cbe50a43966afc5378d5c606a4c53335b7ad2dc731ceee6c1819"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c44c79b186f20ce7ad26b783565e8545e6c46b2ab52cac86df4d58546371f16"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"607b223a5a88523998f7005b991c9e78d21143d006e396b8871b1377f63de39b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"211bfb0a27c67edfa12e729c449481cb46fc17077b007bcc396a01baa272282e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff1bf0c0838f594c1b6ef2d54f6711a7f884041c77e2d27de87ea2c857bd6423"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9ea82b269cfbec634c7394bcbce2068659e7040bd7e987675d274995c13872e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"e533812c1af3b54ac00aa8ee63afa06d43803c11442c9bdb77fe8576fd302ecf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"8263c315cfa78be191124a406f90db72ec043855aec79bae8820b63653789ebf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"a12c3c6f56e213823f5057d35dbdac71071bd5a568d713660871ee635a6428a5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"78b3333a813ef3abc8d2604e268e218e9ed7d988e450d1fe3ff6021b911340b1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Progress.vb"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdab9a82e818eaa12fa4514f11d1994daa27ee8bc8beb029c909c7cd7795198d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fb65ba3b8510ad6d457696bf0eba2be08c9cf836a4ea6427bd61e97712b3232"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"83b1c346a02ceeb6b9221c9e00f2141098ea9ec0f6473cb0cb3f3fe60d978e3a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"276cc487d6571b0476c67ee506604ed01a82498f130babffe1b9f84c3cd47974"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"78d37bd2bc213cf180456ea763c653af742027054f3431a76ef70c0b176f8581"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ae9ba71a1ada3eb3f60d7ac4942c194ef6a414692a243c2ad81e4b17c8956aa"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f13d12f4491c9d4a898be78c42e911a5f8305aaa54715ee2707623692caf101"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"9427fe9bbc1bab28b9e5996c63094ee0dbfdf37d2545f3e2f3c8189782bef2e7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"9da9f2da1ee44a4a177a3f0c31233753b5681c6adc56e5125b4577ae4134f718"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"12ac431fc39c8af3c86fe9b15a7c5968a6c12c0c224404c2fdd502f572c2421b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"377975ead143ddaaf8ec9f80398df6781d196078622182f0c341d2255bffca58"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"69b5e38b2b96ca7ff5d77c9f1b96c029b75221f377a8a6fa245ffe6423533423"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cba4fcde2fb03196e73a61af63c556014d3f725370e6d2f676e5fe81d6e19ed"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"06869b93c079359c7524e3c600bd1bd7a8ac1e2d4112d7aefbf87b4065695f17"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsView.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"2be95ae7c95e21a477bdb3fae30bcf2feb24dc2943555215b5223f85669a728f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"68c25afc720950efeb1443d4d0f4a2b74e852495c95265d59a98b5373cef65a3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"d34edce8ab8fd52875b78a0c57d98b845298d8734e4c4a442ee6f443102b0b59"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"5121797341cbe7e72b975d99ef6927360f52322a0375525fa4f64781b3af8b70"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"23782760e067df13234c7ae1655e48d330eed354d8ab6dbd21482a2460279ddd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":333}}}],"partialFingerprints":{"codehealthFindingId/v1":"41676b56ae7679ebfe6835416a43648b9f2220729a3d61f9f2d1ea30addea44b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"2181d42518fe649aa16d0fb1f5f032783a4b9d9b64a0b13eabf4d94ad1765423"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"24f4e30c74df3d328d868e74854f832e09f5bc7358d42c160aa03a1656b54c23"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":420}}}],"partialFingerprints":{"codehealthFindingId/v1":"702f53361bd4ea92e87dc13ee9ff6b7fea30f5c87e1ac51571dc4566fd9319f0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":427}}}],"partialFingerprints":{"codehealthFindingId/v1":"495caea2a90b2152c29e4fc797a3cdf3a0f193fdf0e91457daebeca91520d6f8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":434}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c55fe25f4f206625b29b3e6ea9d7474d39727105a50d05b506979f49f99de36"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"69236f147002e78e4157c9eccebd090071d917a8070116eff1b162a11e82669c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":497}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e0a1ef97ced2fa07562fdb5472d8181ff55a93049339d37bc16a8bc9041646e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":523}}}],"partialFingerprints":{"codehealthFindingId/v1":"b70957675c60150aa567d6502c4d62fa5afc576aa96aed524be1249e0cc0eb64"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c6511c8ad428191b035bb2df8a12e70b6fd09009091066b4a12a23a9546f89e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":628}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d5a0109fc8c7bc7181ff8c137456d19194eba4048495d0f0468d27d99542f55"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":684}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b60c9548406673ae14c2dedc468cdd4a3534af0814f8d5a85538c1046b426a3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":699}}}],"partialFingerprints":{"codehealthFindingId/v1":"498b58273630d1fa4e40ee57c45b164dc49b3ed2db080cb667682aa1d708494f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":714}}}],"partialFingerprints":{"codehealthFindingId/v1":"8639ccb476cd9f71b4c2e72493b8477122a4a6ad0df280cf0f99f5ff7ae93330"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":729}}}],"partialFingerprints":{"codehealthFindingId/v1":"c981fdef594884e31feb07e870fd3ea59a18367c7b02035c15bbb90d9f77fc83"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":737}}}],"partialFingerprints":{"codehealthFindingId/v1":"b80ab3aa3f9bcc4d0a4d3abf6b8f22dda435d7241c59aff2a7409ea7eb45fad3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":744}}}],"partialFingerprints":{"codehealthFindingId/v1":"22f10b4e6ae6d46e17936b98dcd2b1551c33d0c508cf7b32ae8cda4e3baf7004"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":751}}}],"partialFingerprints":{"codehealthFindingId/v1":"773cc1c23eccaa9ecf289fbbe14b5e58db8efdb336c7d18c488c5eced6353bf1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":758}}}],"partialFingerprints":{"codehealthFindingId/v1":"41a50028ec17fdc43d5f226d269d0655c78cb9a2128aaed67acd00070bd2d115"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":765}}}],"partialFingerprints":{"codehealthFindingId/v1":"985641d498700db68d8320698529a3dfb7a7e44f4480a7e783af87270987e982"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":772}}}],"partialFingerprints":{"codehealthFindingId/v1":"268c56f1d621b92fdebd0eda57676a6a6c87dd927435c6278ef87e6a37dbc058"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":779}}}],"partialFingerprints":{"codehealthFindingId/v1":"0406ed14e36a95de20962a8169d7cb090e3c26338709387c63d952c4e0e70635"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":783}}}],"partialFingerprints":{"codehealthFindingId/v1":"543a72e13dfd2075a80c6c966a18bb6748e038f1f0dc3c132dc768c79de45ea9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"9da43514223a9fe451b0d61021987cb0c9d6cec5895adf34496c78c6fac65984"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fbb7a4856004017ef8892518e618be1bd59d8a60a9a94590484f675875dea67"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f644c3311f3dd377aa556584583b268ed56ae658596fe7a805a97b240aa273c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"f10ec28db89f226467d060d1801c25fba90a716ce3e464f43bf4096b0f515f2c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae6808d616c52192bf494d9f6b60ede902fa9217a75df7361943c7a5619c3efe"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9521fef384efeff82404f33324b63f6860da41184d011cc6ef7e874fed7ae4e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":423}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d19e76ba9a20ef6ccb58189bf6166eafae66729b49f2ee1072645adf0b4f922"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":448}}}],"partialFingerprints":{"codehealthFindingId/v1":"36aee809ff03cbea6137f1ff81347706166e14f871891fafb220b57b2976e895"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":494}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef8f63aa2f8bf4c70e59455ec1f32146bcbe53a7e4585f1ccf774804fbfebad9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":536}}}],"partialFingerprints":{"codehealthFindingId/v1":"5caa09aec8d5c9a6ae816c3ef557c4ebb2f79916381c9e8a775b19968cdb9c06"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsFam.vb"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5c8385df12576bb5fb542670ba81837a6c303f932ac5b113b552a897b4db628"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsFam.vb"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cd58ef3cb7736380a8b85affbc3338f661a3c79e9a7d1f3f2fefc08de93c940"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"796b7ae588928b7650b8c29de3c1c8694500247afae9d7d404956a721167c86b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bd9a764d274e656aacdb0549a18f5a5a7a22a5f9757ec61284afbf985af5f2b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"597a5561df6bfa90487c37fa74abd79eb154a9ffb9aa5186401bec11db803cbf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbe56c60564d696428be944e9d0177cb9ef460655fc5ac32da51a7ee81f43d18"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cf662a3d7fcf2292ad3f956b4e09b7dddacfb44687a8b0afa6842737ad5aad9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"840cfa9ed16737903a61329fe52cfc45131b8fd083fe7aa3e6315caaaee3b9c2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"0938d60ebe0e657bb2b0c036c58b91f879ba2d5384c8eace5c02e14736b5889f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":419}}}],"partialFingerprints":{"codehealthFindingId/v1":"a00bb105f806651b9b863eb5c2b116c54c819a4a35f8b9ae08bb4d9e440443b7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ed2f29a7c9c3d5d5da08dd77d0a81d9a73215e84322c765ccbeb4abbdf7e109"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":476}}}],"partialFingerprints":{"codehealthFindingId/v1":"9aedd994da3709e3263fd98fa248ba149721ef6dd51e0fc852323f1e37b68b28"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":487}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8a1b1ac9c966fc13a9b26530b4c0f4d4a31abe1ac756490bd2377216f82b135"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":499}}}],"partialFingerprints":{"codehealthFindingId/v1":"3dbe750b9d2a73d945e661db279e3a6360d7827bd2693e4dffd3634f8b9c63a3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c3bbb07a3913323d6feffd7e1b06901aec3cb0dd6ca1bdf30b88f32f44501e4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a8e828ef131a052865d829e1675f3095203efe22cd3420c4cdf304c2299a20a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":587}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f45128ea6d77c44730fc5ca7a53971fced8a690fd3c645b356be303deb3f3ef"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":629}}}],"partialFingerprints":{"codehealthFindingId/v1":"527a655b17278d564849914db40effb6ddcd942eb4d5128821768e5fbbf3cbbd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParam.vb"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"33a693d29b9665b43e822b7befa3b14c2fc06bd938f17bae42b1fa473030195a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"eefa6b2a6424234eed6465b009bd85c61ba2fae41a1966fb3214f3aed78817f8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0e10d3ac2d17937382e124b4dcd9c2245cf655bae2fcfb95c5b1051c5fe230b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc11d9b461bc333af70303fc30dd127d929374e01cb8d753abcf9e6f4114dbc8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d3992ee5eb4d712fe473d3b013d29ba4f3ed10defdf886b57f0bcc1a99bd804"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"40bfa2f1e479fe6fb8754905f02c2fea13ebdec4da18cd2e09919c37daa021a7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6a2830c726d4ea53accb89dbcccbcf243f8bfd8500532ceef1fc037bd7ca5c1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"fffa43138b791cf3f910ad7452b3d83d755582a23caf1b2cdc4086cd1483269d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"94a26fb8c71ba3371873a17aca9c3dae4bf67cc27f40d3e23294d0867c10b7c1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"390bdbcb8fd8b01c8d8271016529443d93a75fbe9ab1e5630c1df8e9cfb79fc5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4b181d563cc961b737962a85abdcce9ab0bde160f352a5e337f206993a767d7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f0bcf7452bd300cbcf5432d54e6adbef92c60e3c401247182ad220b4d22984b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"6030c36b7594763027fa4a918d63c0de06bcca0dfb16240b7f50d894bcb1af58"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e78f7f73b1012a1db3ad280c154b3d3bab0ce25f2cc4b26a157299c5f294103"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"f636e0ceaa1054091e84acf9bb45cd905f32b5709e0a4ddd137785a20433b6ce"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7717949d487e853d45c634b199b301418ccb558627774f49a0dfa7ad96b70dc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"10b99d25c1eabec51fa84a94cc19bddb8a8b9e0233ec283cbc13767b41fa92a0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5a1a9b7ff04f46e1e0dbbd196076ee3b7159a887d679a8f9f95df466a631274"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc2b869600de1e3429aa9e399c899756296bd9db0f1b41a4becd52f799499f22"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"aba5e5c591b0692f89e672985efc5ddfb61a66c717c86a0e3d20ff34c260c104"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2b3d5126854c5d13aa4487da4bd62c86c713fd0c9a6a8687906ffed68056fcf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"10d93156a393301cc7ad318fc3ca57747d80c460de0d221dfd8afc0ee9d416dd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ecd241f79e899124921cd10b20d8a1eae80a2ecdafeeb67e00395f9d76e3c5b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"817477cfa8e40c10fa190f56e3a6357db60691beade9904024199fa465ad08ac"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"127f6cafd430955996b7ce85c01c8d8b1d3ed641f008af95e3ce985593d6131e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"f89fa14251a24be5cbc7d11bcdf62adeba72d8ca71211cc73b5bcdc4bbe4a629"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb5c9e66077e8394f9e39e9fcfedada38607a1b4f01a6bf8f857b18efef3a00e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"faed74cb43588943ac61b49e401699fb0fc9add1be8684e82098d3dd23600e4c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e96834abb0af66182710e4914443ae3076e7e4e297bc5109272972b36e10610"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"109401e52cffc9a227dcede51d985aae9fad9125eb857e50edeff8ff7c37f1d0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ddad58206d8c4872436b7b6b9ba445901e950a255bc8d43e2571ecc8c246042"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7cddf5f665b4af171dee9a3ec6af66a72baa9d8b580a0de4e6488fa766bd0e6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"76f04b75c4a62e640798d411cda9adb966018855f4228859e5da7d9997626355"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ab5fd8f99e2a69f47551b1ceb39db34c8ee35965d9d0b7de59caad4682af2d5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"86f267efcd4b4c8733412bf451eacf74de2026356f0e037ec901aba5aa2dbd99"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5cfdbc01b5378ea425a15b398c2c32769e511a0598f7d2732b1b86f12884048"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"810153d41bedaad972c78940b536898c9a925f0995b328dbc970b0dbc5278d6c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"61288d3732faef8d8e4386a07516035dc598ed0be486dd36f08152c8a7d26467"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"b89cb207e945d9d1422e8f85185dc8deadbfa4a3db67affd7e02f3516e32b39a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae56833d3ecb03e59213d4ac295fee192172f86b431648536187218072efc8ce"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"d92c5e649ef7d414f218aa53ba3abb028b920874a3cf4b7417d84868f97cce88"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0beec1daf73e7fd3ec457d07242927bc2e94657ffcc716d090383624584dd7c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"092a079eb189812532ef2586c86c0141933aa5455ca5a80b3cb46cb17ee73d63"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7a82a5f9db2791dec368ec96edf8dc360899b099d2d5447de7fd3aa77a1bf91"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"a192b00d36482964d3955327ac4dd95d805dba92ebee53f570a209b8380be8cb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2514.vb"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"461c8b2052b3617c7119854a2a559a07bbee32b54314b382cc419e0966077eaa"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2514.vb"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"19beac8275bf2cb8c304f40a08ac665fccb126ac44f1bb13774455028709875a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_AddFamily.vb"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"d10ccdb7b57fddd58f98d033916088ef12f08ac0c29c6f7ccba0a70c13696dc0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_AddFamily.vb"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd7437e5d973901730a767e860d033add24f7d6c6cf49eee8d86d09ba054b911"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"02d9bfa8fd371529b9325dc5108b30f86e027679260da59ba2d38a0fcbb63209"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"fda5590699eb27d0e9de1eed14f905853c02c69d1e7de3aa4e3f1ae6f1c41aea"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4fa390cd9c0f449b8b6abb52d9164070889753cc484b4681d2b19196361da49"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5e63b602c6f477c20cc4fc0b262b68903e3de7910a1ae949d6ccd3fafc5136e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"87090f6f7b4d6fdd651dd10be676c4f12d91710026204d112bae83281de61cb0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"920a98e0dffdd4747c5084836de0e423b71ec5f3eb6c62936a074ecc042dcb2a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e50eb76229282a160bf76cd47bd2d1413dee80f3d74d7a6e7bf5cc77f1ee1b5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba5b4fc12c3c828f91c019f1fbfb28f84b605136e86663a76cf9d062d57d0d3f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"4739859623f34437c24626c7b2a4505a100024ded21d39b14e24f031de979bde"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3e36e93ddf0cff22f33d53b7f54d32ffa8c82999f5f5757ed35eeb5500762ba"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"924f3c8211d0b23af765e7f58cc6e4bdec28d759841c6e5c5e137cc537bd8a9c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fc9426ae332a1cc081be24714d6f7b1b1999c25c2c38e34e04d601fb88b5eab"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":613}}}],"partialFingerprints":{"codehealthFindingId/v1":"65a95de4541d6cbf9ac078bb35f32288b3227a04279cb38599122ff297888ce2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":674}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec3224866a26df5814e9bcecffcf69feef2fc2c0ece89ebcebeb7b6b39cb8eee"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":690}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d61bedaa1ef4d809c5a12d1f52fa5135aa9de2468950b75379a51ddfc8c4229"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":709}}}],"partialFingerprints":{"codehealthFindingId/v1":"253ceee6fd49d8c91eda0cc2621bbad6df9f6099f1416c7adcc871b820a368d4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":721}}}],"partialFingerprints":{"codehealthFindingId/v1":"2568dfc73cdb401226d8e302ea1bcd4aee441e8a173d6703e187cc8f5ca531ea"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":733}}}],"partialFingerprints":{"codehealthFindingId/v1":"a125a8c77ee7cea3f95c7fdc6cce3797893e9ec202c5e6765eb431c6b8d9ae9d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"3639138d4cde73588f01252f83c371e7de7aa1eb95ab7d7ecdd39330aa439da9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"44d5cf547289eef5ca4ea2b619727a2357d4aef8d9fea685134c985752f748a5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"990e62b79f06858b117c5310d281302ad425b1ee6b5698efa4fcaf1b92ed02e9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6f2d2bda00587e99ba61c44d0b66ee98b84a9b4fde8aedfe5e40420bee0f446"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"889dfeefc259016b6ba60b45e48b04bfd990b8c7d08be6c3d916af2b6b6d35b4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"e67f55770f0a6f1d402d63bcdca5a1bb10027587a2546358f6bba966934303ae"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"23c78101bc3c0f6715b6ea2e94e9ad8e4f9da39d0565d11de786178fda19e681"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bb2c3c4f18bfbaa4a6fb116ac9f712f71589bde0e6a39fe961fbc94780d9a0e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"43be8131479bc5043a8271161dbefe8ae94667feb20c96d759914961c4b69396"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"78f779058cafe0c0ab4bbf83182925d218422f4d851ac35f3a7a4bc4e464154d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"07c9f3b6ffcc180e249faf1b20ba2a6c9775742a7c1ea1a409488c51be9e4f0d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":354}}}],"partialFingerprints":{"codehealthFindingId/v1":"46fe3e416a4a2cd3210cfefe826b529cab929ed2283bb40d191fbaa06f773299"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3c521b453265df458b9003684431b968fd6c0358d85fce176a8297d6055c715"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":380}}}],"partialFingerprints":{"codehealthFindingId/v1":"66b5dd5c3cf456460bd96e192479568b530815480ac1a4da82133c4cff2ef54c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":402}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb4424e8e2b1f05ddc22d0d51b4d9f8cbfc51a10009a49a4964b6fcf7d83a879"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":430}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1803eb5be6842e5fdf14830d5cb6ade13062d26bb41a106bf9004362868eb8f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":438}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf3f60ea34a6e98b1f929078d9862ae3b9270cd90f2cb4dcdf5ee60be3d8fca1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":458}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ea7b4f7d6fba499f1bfe535738465ef7b6fbc83d670e18dc78283e9b416b05c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":464}}}],"partialFingerprints":{"codehealthFindingId/v1":"28ddb430c94c8ecece1ca5d69e945453a82b407db4718408af5a373bfb47065a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1248553e4bcbd2edfef629c38a26e6f8e58a90e53946f64fdb7754ade72e71d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e74c0d989ac0eb70c8d457c1ac7143ec487409f35ec23cfab0e6995aafe27c2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"33e5c99f22f7957f7b14898fb9dd77ca3bbaec9f9897a3b2d903c453ffb03307"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"528fc5f2f0a51b5e29355eabd841597a3ff2536957c1506242966db2221ac015"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"839cf9899ae423ebefc6e46378a00aa280d3ba52529a5bc29a6bd8c8b22aafec"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Progress.vb"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"198e6b5d80b478113c974e4965f814ea3540dc60b702545179d0476d81f3d004"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"f27b8b435f3b1ab8ad200cf5475b948edea28c3e2982aec68c7cc60675a69894"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"22119369109634389a85d1408be09681ec8287de85940311dea56856f7da1177"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"63365b9624a911d3f61882be7e97d993a7ed53ba709e858ee2491ced31e0a20e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSettings.vb"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ec93485e03d829967b6e36426f16e04c13631240b66539efb870b5d302e397f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSettings.vb"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"c18c0348a8a52d4bc0473a6bca0b36d1b7bad903d73281607ea0aafc8af9cc49"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSettings.vb"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"15b859ead837452e200b7ffce955b75501a03e1d9f0aeb2f56039b6bf72fec8f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViewTemplates.vb"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"228b456e06c724e8ef9fa21e121ee4863b5850d556072ebf1f4e9631a4f0fc07"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViewTemplates.vb"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a55d6a06c08a48e8ebe59f6adeb4c40ed6d50ebbf6db88ce3a0facec75d5453"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViewTemplates.vb"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a6c03456a3f2ef52b9929640a0f0475067f1a317597023e4af0e933e608fcd1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0113fa7ca0c88bee6d0dcf7600aa1df09e61564f2ff69a209dfbcf56c8fa41b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"92f255678ce5c57fe28b07ea5ed120d0efffefa4ccf5e170d31b5d9e5b7c5ad5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"73c96a066a2bf0053af6eb81be3ff4867d4c2bc9474972747077d3de33880b89"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1152ebb19bcc8d0a0a03d4befba72dccfae1116854fd37664595761ee3e17a8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a932948a378f0b2bb5496421ed887f7baf4604ec86788406c429b05a878bd66"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"e36e4affde89d96674c0976d714b088cf3fe2c1b55919bc5acda6cc7dddfd571"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"55bf6f3f6217466c828e08555c3d17f7fd7b7bc9e362cabe7985a58e2b3954bd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"47f62d1b1dc6deaca818654e1e707163d6c89bff197db0ce6341b116e134237a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5262dc7f5415e7b7dd6d3b77c2e3c518e4dc00c751635cd825b2e04ac4a45f4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf647a056fc1a60384e1db06e0cadada09302995b7c4f764e64af5dce0b02679"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"994161a42b3ffc247e9ccee532304458d12845cacefbb70a8d2ea15c601a9108"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"029389391f5ee541e9f1d80232f1d11aa64693be65b5ba5a2f1bc39a4189e7c7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9b8d8af03a65fa22251ce9eb5373e06252faeb1bba942620db46d2a85a9ec1a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1a76d42049bf4d1eb76c94f46ea18dc07adfc2206ed8b6d9c056e9fe900e597"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"46a53405efe01fcfb77c34ffc00842fae73d88551c9338bee50a9bde5dfd7ff8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"f337dfcad63325ace3b2c3b573f8124c6bfd3b5b4713325ee49c09496c093007"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":691}}}],"partialFingerprints":{"codehealthFindingId/v1":"2533dfc9c24e607ffab186619faa36360575b0bf59fc4bc939a850aee3100e24"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3bd84c77e1579f5a4093d7ee47b69bb833d0877d8f401f180b1781191e434d5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"031f8dfa9d5f1cb5e87a1460fff3d81295be39f5aa98a15dd046aa1cb14437eb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"07a839aa0ff33c58bc8a5c61bb30c86417bcf74b7c09b53a443b307f4d1c3761"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cd978e94fbf935176aaeeb6069f0d383e3e472410c36412e0818e33dd73c43e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"159333e12573382527573565f05d318f02a528694c82461e6e9213d1230a9e33"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"79c6ae128e3497d85937abb56a56cf16b60404d97427f5d440737ab1185523fe"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"8430b91bd2af1ef44deeee14f704100e6e239dcd7176c226ea1e9c55719b3f1a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"e33a74b8259494346c8ab5adbf96304e4e1c1dc76dc54b84fbada82ad10475ab"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"8514040c5be03959495cfa4231fc4dee370761bf51f455c75bcfff1d176366ce"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemType.vb"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d5729f6bd124b22fa73ed4cc7a1c05abb06cef5f4f2270cf068afd1860b806f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemType.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"b33da3851cc03d7e0458cb93d0468f7c6ef3cfd73153a930652e064b9bc75a3a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemType.vb"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"01e7fb1d0746cd733c978ce3aa62bd229dc65f75434920f9bd7b7892ff4df87c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemType.vb"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"a50ed2cc9eb8b36a9215c9f6964060a310f116d91f07a71b54cfc8b9851c7b90"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemType.vb"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"edbc58079640a13ab81a76db38398d3e582f5d1d470895210f9df72e1f4d1fd6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtWorksets.vb"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdcf3054d880579b3c9dfaed46261c2cac52156e17215376a4d86daf8bd186f3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"079ce0da3b7444dc5cc2d7147d9761de2811367995452e64940db076eeec65bb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5b976328fbe369b9ee7d350990e3b55eeeed03bbb18109d59068bd4a0d5ef79"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"353baff266c92d1cd73b6c16e266d5b55f28f8ae61a0a2952cf3df878831d411"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"8968dd601d690d0bb84bbcee149fad65b61512a8da13a2026fd3a32da5cf6548"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff7b1d199e9988f34c91c8872f2d7fd3d6e1434449e9ce0b307e50360b7d1899"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f954fc5911ecbd7384e9fdfed7113ee2781598b920078cf3be5d33d6d25bf85"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"738defb0a94c7dbd48db3a822ba1971d80885d6b256e8f7d636cd6dedf34a4d0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e0346a483f7fcb77799ebb3eebe7ea8576c45b753933dac5369bfddb7efa4bc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"dda8aef1ef2a1970190fabfe0b36e9b740f159c06adf2380a12a2aec9079713e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb563471977da2ee835ff0b625c1ccffe51d04c6cc7299bd40130e836f911fc9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"84a34c136a01b7b6ea6b2d8d8a1a9da581d421cdf8d0450f51b079413607940e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"108809ffa49813861efc23d8e8b23064cb6fa7440c7f3d1d922ec647d6cb4c97"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c0a7101d5fa691a0581190eeea3803f0863ec3bd221f466edc69aaaa98b4e4d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba4a0d4a25c100c53e07eb57b7333c91c4ea572fd9d9f9c8a05cd9ca4ec4956c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"c64dd8391e3ada7790cc9ba2a6b245f3b764a838cfea6a830937faea3329276d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"c25e883af7ff0ffed027024d2ae9692257c8487065102f24c628b9765274ee10"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"831f78b052186b411a4674d20be4af2bf773d798467f4703af5590dda0f44894"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f372292d72735a41281df5d6190daa20f997531b42d4bcf1955580c4c4c8364"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fa297e48b667f9011f13b0e3a57cee60fb0b831f5797873c595abb61f176aed"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c7ccbf001ff1df6a99156b7369fc2031d50f9c971facfef96e3bc374d427ae5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c6d8643f16eee29e278d8578c40e68128c9273d0493a3a116e6b5367a27f248"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"b587f5983b724a69c91b17e67e5381f217c659ff5388f42ff8130aadebd0c328"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ff4287ea19da7caa05328b71c52cf54084280d466f9db826140a9be7c63a65e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"26f198617bb8bcba7c23fb660e0706ed491a5a665d00fd3d9cfc3733898ca728"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"55f2d6eee1af8a14ffcc96c7d5654f1be98d45e5ba46fbe6c057d7717db33a75"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"99cca2653e165ec5c34d003a24566ecf6c131bad1d714f916f5b45fc8c5df481"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a3b245618eaad6f42ea3dfb0d11162236ee292bf073ad456f8e88d0d4a08857"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":376}}}],"partialFingerprints":{"codehealthFindingId/v1":"846676c9ea5fa6fff0e66044fb6aeb67c4440b1b52b7ed4901e6269dc2843159"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cd52a09a75354c5fcc588b9731d9f22a1f84161ccbfdd3570246a42318e1ad7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":416}}}],"partialFingerprints":{"codehealthFindingId/v1":"05adf6d52757fc2ed86a32bcdd02066ccc8f0b9a913d08033092bc5b71925be0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":440}}}],"partialFingerprints":{"codehealthFindingId/v1":"530016c6469634d7a2e563c097d02b88e9123e15bf61ba8f211c4797b2a06617"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":480}}}],"partialFingerprints":{"codehealthFindingId/v1":"862835a22a769bca2dbe742843b87bc1df17ab1d03c25bae0e68ae8dd0f5ed44"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":485}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e132879f093a75d35ef94453231c58def0fd66d6f6f852037a3161663f34a1d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":509}}}],"partialFingerprints":{"codehealthFindingId/v1":"2aead52b64029ef3448b37ae8fc7a72d3c98fb15d5f09eeda7b9524d26c3355d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"051b64c7cb1d9169afef73182cd530e1720ce033246c4f54ae3e7e2835c5a7ad"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f35c185ed8518ca739b92ecd08de2dc0c3e0480cb7b78e3dd5202d6995396ba"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":597}}}],"partialFingerprints":{"codehealthFindingId/v1":"40c2d45e3531f7050ea1677b5cb3deebb0b111daae663b3001178ba7f56ffa56"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":623}}}],"partialFingerprints":{"codehealthFindingId/v1":"f724c11b3a6e0f7e071cd2a2978bddac556194f992e29bee4ab08be8210b2e4c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":684}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fd62ed426dfe47d78c5ca01d64ebaf5df281e154dd7c496b7cd3b8ed0133bf5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Progress.vb"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"28dd3adf5f41e34b15a8922c4baf5c20478718f3da19e62a5ad58c4928922572"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a4cd5d894f61467835cb7ef2cbc06a2255abb895823b132900abec4361fa21d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f166f0e976ed8cee766075d9bde7569b5008798275515d54020db96f47e1046"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"94ca78f3f563eb54f8983f113799e6d2c9ee8604dfe610db0db35bf6b36a65af"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8511e56a3106fcbec2177ff92acd1b40fcf37ac1d8e956e8e2af8503334a7b4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"01de08d70b5d74bd5bad6898a12989b507c29708a8e5e475ac89e22773a829c2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb809d271f92f4d82622f0535f39f005937d0b12c1cd1bc048e3d70658edae1b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"282f5312c1e21f2970602867cc670fd4829f6e464d99a34e505c53208ae266fc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0aa648bc083a0c74c8f89302b60f7e4e8101f1a67d287145a7bf2a269c53409"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d9f24192549249a46ff8e3f14120ea5d336f57351a3f479861aac6e30423692"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"79fdc87bfc55382696682b6c46ecee71fbd9eead83423e4af293c7597b765351"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f6d544fa3e8f70c6d054d762c22f28fcc6285bc5d2c496854d30adac3161d99"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b3249b7ed79766a88951abd7f30ca31fc423e872ecf2f0b30de4b210a07089a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cb5ca5b30523ada419b484a2100b22367fa8ebc466f87c55b5b68edddfab9c3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"e597a16e3817359ea6f6fae73376de0333c906064824fa737a98af4b676143f9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"18bcab2e2ab53bc92c3bdd68fe445cf6162f11b8f893877d675e210c540ee01f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":367}}}],"partialFingerprints":{"codehealthFindingId/v1":"24eadec50183230f7615b370485741c418dc179d1e3545ce2cdabf793f0bdf0d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c26ba2f799c2af3898a742f09b2df17b113699ba2b98dc80a32ec5432c49fbe"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":400}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7063d6f7848dfe71dffd2d52e7ad4005afd21b02892d5f4f26033c61b64f822"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFamily.vb"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"d561cf8bc881d27ae5fbf14534696b511e411bc8140e4a2ae55580afef54de58"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFamily.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c4e6ed11135de8e98f0b0c61ec79fb0bb4336ed9a23d027f74c5281e0701573"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a06b9d3b692194ddda61b0900355e5edfb6809be1de9df1d9c5fd166c2f4094"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"71ca126539adc97dfe0357ec0c57f0f883a7ef07aa35baba8caf573ab1ede661"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"855e9ce4221f88162eb0f121f80a567b7677143e702ac8511709ec09a1611e30"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"093278f566715eed5bebdd85ce2686b684c9e173bef9118299721a94bd7fb5ae"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"4676b33f00ea3bd63083147660bb3bfcfdbb0099ed3164fb765d2f78a27bbe82"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3ac61ba8b2523220a45829d1995f61f06f765a64d17c0e8cc8a6adf7bd5a7c5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"d82419b66a6dcd781a1fd3a1cbfcbe0090176b72ebd27c3b62c17974428e3862"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac9c65c03261324b187ccc07d1a7bf41b8dafdc1f09e5e3405a0cb3f5a9509bc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"b198e042b1f0fe434cfaf7389375cb3cb608b7efc3d347da423e3492f0886e96"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c414c0c4cd24358e85591679f0c9b8051ee77b690bd6ad42106d8c2b4bf7ebb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"48a7f7c7158bcf6dd84a70dc00427fab35c178ddbca94d39cd5b273fb2d0cf74"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"4725d90961c898338b6d7bacaa574e6217fcbb37020e4c1ec4fdf38f20375556"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b90566a35d0dc7b7b571dbf875c3daa3c0b06986aa03e382d9a6f4c21afc797"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1c8c03b502eb1e7e1de4a33abec10a208ab090068b790c3e391519a4fb066ee"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"765c41385b3b121f5b942e4c8cdfc156da3ea1653770220522197af7b88256a2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"43334ae1a1c1dbf648d96be37afec536dee22c587986468f64e20fb117dcfe73"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c131721527a7c3f33bf2e1f2980e82d89f8db34172562668169d6cd3dc36c9d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"875b10c0fa8a218a2499b05f4e0c7b28de43d296470e119c98bdba6022b7fccc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"920a0ba122c17ae4a1a785f93be10167004a5092c378a0ef93300b49255e9242"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d0f0252e5ef6069d746d5ab5419fd49bae07db6c7d1a80a9f177e18769a3ed3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"68e9b4f92c0bfbec3d59ee2dac339fa558a3a0c659e7d93b3e1dc607a45455ad"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"92d415da228289f758c26e413652b13daa1899f04a8cba4024461b691bc10d0f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa0c97ab322f832a89e17289c001bb6fdcf6d3cfa3ea61cdbf9cd61e8cc41ed5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"86943ca66b34132c201af8c209c086ccd5d4bbdcc6760251a4c9239efaffc666"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"66eefdb69b884799089cff1375d041bd3cce71dca4ad69ab622e77c07242e75a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":338}}}],"partialFingerprints":{"codehealthFindingId/v1":"abb8b238d9b50f14c6a989b911e348cd75a7c923882e1473783a1598b0ace25f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"acd97a8d81cec7121b4c62c58aa80d362a2dd01288981c471a05821f52f053bc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1a5c6ddd8ce119c43bbb602c7cd46e2b01af8dc4dd3feba89427e610238a60f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":373}}}],"partialFingerprints":{"codehealthFindingId/v1":"df3994f9265a537267e23a51af5871aac16931aeec4f2f381fb24e826d1109bb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":396}}}],"partialFingerprints":{"codehealthFindingId/v1":"e211518491991a8ebcca81d9038ca4c9072317404c0822ecdd59d7a89c63d6ed"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsView.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"91308a2f7097739775dd596d26dcc198c229186a9e50283d56623e19e41bd08f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsView.vb"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"525b32dc1e65837ea4ba3d2d8437926e9a06b19e040f9f74ba5d88b41777d7a1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsView.vb"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c10c17a7c0c2cb00958f483608b87d4764a25b62f659f5fe7fc4a95306d56c7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"be68f289beb960f5d6e8655ed31bd9d4994f051f3ed4b19becd5fec3e8f5c6f9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":501}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac2ff10ef9f19ba388e93a9cc6b1ccaf96eb7337cf11d968b9eeb362ccbc111b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"5989b62daf5fe476d351eb2b77bcf70013d30c91925cd34f40a2b1cbb723b065"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"38e5558162b299de298385fe9e592d2f645afc359a6a062fd28c8ba3f7cc7e25"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"2be9e7f5a698cd65ecf2fe9800be495099427b4aa520e90759b54121e88fcdc4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"051345e65e529712ec75d7d498413adf13d1229224c05d869c0baad36b728de2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b1ac82ce15d272330b37fe39595d2e8d39269349dd5e8401a2d57fcf3e98ebd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"b53c42340f26bd904a52b4d9924227ce9a31d35017069b3f273408b89f726086"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"08ec7b2e6c0b6f6ac238a501d857382ad7c0f81d208a3934a3b0a3a00de53151"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"c08f649608acc0f8cee6d7d7ea9d5574e8c224e55c3de54d823e9fa8494eb8d7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"39313de43550fa0a413c9b18eff451514edc1f761d7833e984ca613f6eedc761"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdd719b1e8b6d412ae7591648b7cfd0a75df255fdeeb007c178749e421523f82"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6fc7df83425704d05e66b18a6e4b961ef41dc0c028fd0b8e6d54f871bdc4a35"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ItemSelection.xaml.vb"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6abbf13b53e96f05ff7461b12c366534622bc724315cae5335c13c57bd55f57"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"61f1fd3313b644e7de8481da65aa13220bbce82fb0b3f029625d44b38ad92100"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e1b1f00fdbc5277aede081b2b5662cd171b6e77aa5d723bf5693a224313df79"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ea7d95ff7e54d77b61d160b0c24156eca15a396e90ed1f027b77a86486f888c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"68a74aeab7c7053b2d96f71ba9670b38e6451b7c4b0caf584f8d1fdcc5812294"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"02d5c06c6a93069ac5c5d704175d1f9fd498cc86c454d4c926a54c9506df0724"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"10fe915fa2fc0e27db5f6326687ca38e2869ff6777dedb793efb31ee12619621"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"654df515ebd6b1c4dbf0d78c943ffacbd14a196311f0ca09e8867c5e327ddd36"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bd581abcf28f39d1f9f9bb1126cd7b006a9da99a130982f7d1ecd4f5b653930"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1595b4e4a453d1b4d1e77925336f730404975fd13f9fe3584a13bb66f6719bd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa714a11736d893654f878b20d47e25ff25dec83396ea37484214abb1774d7a3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"99c779cbd8a97eb5296556b8de7295f31d5f95bf215a45d9cc8b62cf3fc9c006"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8c91d2b8a57ab589e65179c0236ce5d8ecd50b52b609c3b4763c4f720a9e190"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"455df053951369b5ba54ff87e7e701cdbc75aa6b6b6acdaaa34ac69a81590172"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"f09a9c3e1af3851d84cd0a00beb0362cae226c2e04f0b2b1cf74c20504ac1c63"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6f1a1a144d56ca42c555983d69caf971b1514e2b42760501bc6fe7afa1457eb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d92bd8813071e4df481eb0a5bdcdf84b226a3bde051deb029c0a8300775b3e6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1d639dcebf0f257a63be173ddf93b4862120bd3e33fdf1ec35b26392e96e3ad"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"316e03a286e1f2284279f556e62159d90928663ee0d9041837b377b18082c413"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"707cda7114b4ee30e7842f79a757aae53de36ca6b3f86de5cf5a990db1e98742"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"5346288ee99576ef057a372114314c51f4bbf12baeb97a500e40d185c96a72cf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"43f1169c61a8930592c0b91b5b9dcf4968715861280a4a522d06c19b964db690"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"30e20f6c6739a55b10d4d340a8aace14addba1244f3574b93750ec13b9943dc6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"43a82c1150afa2ff03f9190ebc0fed9da9a30fac45a56ef3fd356b583b0bc59f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b529eeeb1de797d042cb411480d4288744373a7bb21c11236265bfd69a1c3cc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"750fd8b07f1c01b59c08e43254d4d689d2f63a2921d343953239709988814972"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"089ba1f8307257c8b1644e518773fba9b6d6bd15a70a4426290a96309d73ca3e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6db5c16d62fd376616a44d4fa60aace0c477648b0ea0f221c783b1670d1fa83"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef8ba4dc39cba6f8a2141c27e6ada4d988d6623e101f6dcdc23b02c693b76e19"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":354}}}],"partialFingerprints":{"codehealthFindingId/v1":"17a43e62c99f3f9dd3baf117144209f0e6b3d5960bf35a2c0036772b9d483d4b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"f95007bff9f7931010439a954922e596e07354bb214abe15c580e1e135772507"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"9002407b57cd22aae9750de644f992925bc9d02396c6147dd17ef6d1fb3335ca"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"21c62dca037e85fbe5364ef550582b209f3b1d0ad36468a1aab5db9ed23fd1f9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"49ec0d67102d20ed7bc09e953e327fe8438087874fbc90380af96f386ce70aef"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe6f5b02682fa9e0e037b98316f5206640c8af11a9a18f78fd1d579ccfd4c332"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f9013509df1bef24beaa5867f3edff6cfe614f8e26bdb1c62ccef8611ef649d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"678ca772a29e01ab952478f3034d8127447d9aaa5f7d3b9a6d72bf661031cbd9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"9020d0c7bfb4c8fb6a2f183a451f69dcadb6db85d45631a190e416e61f52ab2b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"c23a93d4407f4bb0e862c0920f6b6155758d9fcee14b055e0932c1966af95ad9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"16493ad7770a98d88b99f4be62dff4b97248f8e0075a6044fcc592b61662b8b1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7849cb58d5846d642cadcb9fd4dbb444f9f4c414a1cabab19534f9b6cd41854"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"209abf45c4c762be7d5c7caf6fb08f9dc6054b4b37fbd7c7e70637558866bf61"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5f92d7443ad4586e816cae34f0c4073f2775da0e9312035e20e3b62f5dd151d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"804e4fafb09d2799482297ff9cd23f4ac4d261ef4da9a64d9c2617190f1380ad"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"2410ea79a3574832cd86287b4a4906a4f1fe3d6fd6f55e91839ff3841a967b59"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"acddcba71594b51b3143c11f3a851c3eda2b00ebf7bab932fbc644908187ec3d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewTemplates/Case.ViewTemplates/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"97ff77fc0eb087c06973d028ee112547faecb2625ecc926db09d93b3c39de0df"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewTemplates/Case.ViewTemplates/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"68d4e7ae4e7029b7c57f1a44605446a9212e53a1864650e824ce80ccae89f00b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewTemplates/Case.ViewTemplates/API/clsUsage.vb"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0120f285121c0283eb87a8eab6330e3f5d4c9be7e3ef643e1409833525f9f29"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewTemplates/Case.ViewTemplates/Data/clsSettings.vb"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"05f273936f278cb6dd6a312cb70564255248ced374e92c4c216e841c0748d0e2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewTemplates/Case.ViewTemplates/Data/clsViewTemplates.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dfb4551ff053594f76eadf5b7936eda778b68fd4d54c212ae489e1e0a265b0d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewTemplates/Case.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"77f383188f912b58e97526917733af666030160f13088782b48b2707dfdc6a13"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewTemplates/Case.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"df32405ae6cae6bc3b723b5539e898d2558ef89626cf377cd9812b8050d17024"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewTemplates/Case.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"8dddf775543e9f7937495564f003a876f52a463564887071223b20548316f7b7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewTemplates/Case.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"2de40b26ae7cc52302eef48324606effa000dc89bdab33127b50f0df76eb798f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewTemplates/Case.ViewTemplates/Entry/CmdMain.vb"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"51289eb3c893fad0f5008cd102ad470eedd82f4f96ddb615afdc63b971490dbf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"b99a177bb02c253472092a8498bcad4f5b85751c2dd47715942c3c63a635e24d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"db07fffd3d94c8f4e759d9b5169da3f892c8cc660b208cd35dc3aea9dd7b59f5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"68846d7a035a0f6d3c7074a3d7ea9812f7106ebc467cc478df7bb680fc90cfb6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5d8f987f3c4e53c543ed93c3e42dc80eb5f8e20add4818640d1d57c15fce312"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"90f5d65b4883ae59f4c5ec4b9112267f3e129a389249515115b0307f6aee9079"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfcb159764e46605d0a8fb01230da2331a9b661fcdfc9bd025ea93aef4eb3128"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewportReporting/Case.ViewportReporting/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"b011cefbb2ac25ab8ad0aa3bc68c16a87801348c6b42fd2610c6341c8b7dc392"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewportReporting/Case.ViewportReporting/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dad24289dcc452851f160f6a901852a04331219d92904d39827956c1ac18602"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewportReporting/Case.ViewportReporting/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a74286195dfccf099092ae87ed18b9aff999790b474863c3e5e97df4e86ba77"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewportReporting/Case.ViewportReporting/UI/form_Main.xaml.vb"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cd35e470fb390fc02a254bf242612ba50c1ca472ea8c54964872f4b7e4dd952"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4a90fcc17adc76f5099287c35954c52fc74bb2d80d8cac5e130db5f7790101d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ac44d8328d2d0878102c2f6b277f0e7951170042b5667d0d299125add733df4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4a9c65ad7a63a1b97a47ff289812ee539432c96f18ec2b872d750d2cf9dc5a3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"059fad8bbdb4d41b70b5a981e374ab936ebacbf0c8d9480f2cc71b921bb820da"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"5148f126c3a8d8eaae8876149d2bf5779843baca1737192fb9154157a98dba55"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fa4da022422f49721680359dd8b0d7e1d142dadf3089ab9e22db66b4d9a8258"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"24c4e9c4f94096bb78e634fdaad48b7794d626063cb39e51e9edfdd018d2936c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"34a11da7dde7082ca7d3d582c04f8716c83b7023918ec6c69a6b5b69037d0151"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"b14c34b4e1a2e2f553d28daf358138ee4054ea7d6f7a1addb82ccd519537ebd0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"caedfab8cc958eaa9a3f2f2c837012ef38ee19b2953c8cadc04c0944660ad9cf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"015e6d7549397eb0a02e74bd73b203648c6983e159a9280c58d6c4309d1f4d7d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ffd51cd2a0a5b4fd6b56d14699c3782982a5983c8c2847410c6e653ab1e194d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"05b0a27fa613b2bdc3e8ab2a4692eb79d56835ffdd52ba7905afad71056734c0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8fb83c33e1bfe2520a8896f0a35d346dd16a11fa7d971399ab2829827205a3b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbaac871f24cab5cf41dc8503ba4cac74cc4a96ceafa15f15fc17e16e7324f8a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"6583a12b86d0c8dd58d8117587bd7823f3a48f4504680a895d77d6cd5f8c249c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/Data/clsUtil.cs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a1ce060b473256221ac24257e3562f9cf4c036aa37d0e5e9d54090d313d67fe"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/UI/form_MaxSize.cs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"c72308ae26eb056596f1b3e0b3b15504f08eb5170090783ad9b0df54393379ed"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/UI/form_Orient.cs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"db57c16d1309f433b52d6dd2eda284b5089698b7c72b96bc2960695967349cf8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"d75fe15b02fce866ca50d898537cab81c2df11bc4466b7c0c505ab66d79234ea"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"2564000f0ede7b06a584be646443b7e8d3ef05cf06214e6a877b392ab112b0e9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.BasicReporting/Case.BasicReporting/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce30808e2d675e11e53881b86bc3d4d59ef72fbeecfffff3de7c5ddd1def4fc8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c438aae1125521d60390166329a6592a62c01fcd81f261476db613c565be0f9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"71aeb3f3cf93d1899be3abef486333d9f2f354d8fed7a03fb6fb14d7fad17b8c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"77fa7b309f45d22748290d4e4ec9f369de7fcf91f138751a8da3aba66ef4c3e1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1f96ed4d9ab135df7beecb0bdb969c346a0b96cced28f3de560fd7f866a2cd0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.BasicReporting/Case.BasicReporting/Data/clsSettings.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"795317ad1501933ae9985d9f09c811fa256079c756dc59675ec3dddba40f14da"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0228ed9677ebd14b8bec63b17785a0fe6442487a4c33dd6dab9bb8ac589d952"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"86509292c3ad439f4ebf7ef24553c9abd6958c6f769e4a1b5de227b253407a13"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2841f5f59d2207da2b9cf48793af84f39e32caa5c1d6bcc7a7252099f7ef523"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4e34938a7a2c504cb97732d7f2248edd1e970d84ccbb2642d3054fa66aca0a0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f2b2de22e2e0a404b591315846df710af481e9837aa84408c86c2b1ad9b807e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e38a532a6eda085cbaa5405bfb5d7af7763e4884642ab0a14aa0ba8cdec1fb0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed1834bf6ca08f477a2a1899e50b234d1e36e2a471ba58449de671280db0272b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d57d127c3a30793383c29beb33f878ae47f77c21048ddd854bb24fd1640b416"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a8bf1fd93bf27e56582dd4ef8e1199c315964e037fa0ed3f6176b55c1058542"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"39ad6ccea05c9e5c0d44f25fe3bfd6504caa5e35b56f581ac3c3ca1db289d397"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"44e0dd35bd5b6e748eefc45b9980f08fc1ee6ff81c4136e3bd26f085787753c2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"7221298404d64035c67fbe62e5e424cb2fb3a1214a601e709a8236074ff46d3a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"bffc66eef81fba83dc2a2b40453c9cb42a53e9cb22673da411c2e381562be7ef"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7ca9f1bc82abf234d8256a348a91f5ecd73efa4524cb02dc45371ed24c65129"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"c96770dc758c2b3760d4bfd1247bbf2cf4f4305f169821b56b32acfacaa61405"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf397bb202826c62198364428544172795d325a56cc759b1ec1f0cf55568f8d6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"474bdac990ccddb6059082a3e8d4efa8b23ec21517de3b17d07b964d0eb47b7c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/Data/clsSettings.vb"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"11248976e42784c1012a64467a13aef19ac2b2c516584467018f5599c9ec6dbb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"af403ca32084a57811abb7f725beedbd451e49f243d1ea8bb15bfce18ee644d9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e5a416258c80fb0a0456ba34de336d2d8483015dd9d0236dc47a81847536430"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"239be5a102a86f7a4f02f63a832a76a87d26520ba5ecf4f607d100569aa14a2d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"23afbb23a14cb56832048d167652cc2c09744460dbf72021d63fffbdecca0e3c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f453733c490362c6a0a1bc959e3f5963b10feb6a229dff4d64465c154146504"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b73a60872c74b9ff70df9f7ce45f2019de17a108ba5197e311d82f8ceb46fd4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"516f0c8042d60dcdb4d1f1548d1a299f8d6cf88b20006b964091e195357f47fc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2596996852e881c8ed5347103f97cdc0cb4b7da5b27a64c0d1129db476b8575"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7f442dfc9439640c03c3d72c04829e0d355caac66b5fbd3708c5f52614104f3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"035bb83978d98c9e7307804533fe78ec164420825a62adac4cc9226a99495777"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"d64ce9aeabb649c94324b7f7b3708a6c56af55b63d1a3b0ba14c5bab4e840386"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb9776d23d626da3fbcb6732514cf147a92a730a5da54019e51d7a126eee6c32"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"e41202939710590e6ce6802bfbb620f7ff5bf6b0d363e34c378e821f241205d0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"67c53b554359b7c8554b70e9c5cbfabe56cc84e808c60ef4b61f63e3ab47133e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"954591b5322672a33d597cb4ef2e6dc91149397a6c6bd7fdba71ecf4b70b2c18"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b0e9da6938e4f53e8553c7029119bae6b6b98ce1db9ac810c193226e5eab6fd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe319fd4de9f0075ce1491dec989d341e4a067696da48d5896df46164f27befc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f22006b02090f389d6ae2e94461a82290987e4c3209a893cf6f4c045b613e24"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cc84f4d134cffa4fcb0d8792a358dfeec3cfb6ef14453c7711eedaf7cbb9e6f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"98651b6fbd4cf3812890c1d37eb6ccbd827f3575b74415ad98ba971362232608"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Directionality/Case.Directionality/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"56d5d298161a55d19f5b5c1fd2ec2f9669d45fffed7781c3292c2c29237919e4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Directionality/Case.Directionality/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"2378d4199bc5cdd1eb19b1d4d2a45272fc7847988a60b83b9ddd6114e5f8b724"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Directionality/Case.Directionality/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3e87578f05fc6c2064cae436fd8b1379faf43466a8017b984be1b1b80b15dd9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"78d0140642ed3cbba5fed2fe73ac5c0d60531625674e6d2bcabbddb25d68ea23"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"e97f966aa7eefb8832c984b3f514c508489184fc7a8e9f1722ee27295eb31bc4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fd297b3b20825b716cb0bd5b109d1a82bbb348f3fd5189f578557936a278d64"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Directionality/Case.Directionality/Data/clsPara.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"e483f2016a655c652fed42086bd654a0086b54708ebf719974accd134e44c680"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Directionality/Case.Directionality/Data/clsSettings.vb"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b34be769d3a6ef4d1972d88ba115f5b5252c3c1164befb5a8a179373529b072"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Directionality/Case.Directionality/Data/clsSettings.vb"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"e70d66044f52f2f19b88e6ed37e9776038d20f5778c4f6ff82e282b65fac041e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Directionality/Case.Directionality/Data/clsSettings.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"61e62947671a19ec4ab039264fcb8473aafaa8205b950bc67b81421d9ebedee0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Directionality/Case.Directionality/Data/clsSettings.vb"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba6ba8fbd84cc6ca4dd22d05e6653301bec4e8bbaa342238b02fd54459f356a5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Directionality/Case.Directionality/Data/clsSettings.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"fecbae686d640ef298d8d7ae305499eabca5ac991bff56da1318f30f45d2d4e9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Directionality/Case.Directionality/Data/clsSettings.vb"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"7149dace01faac775429034afed9996e05e479dd7d90edb6b9277780a03431ef"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Directionality/Case.Directionality/UI/form_Main.vb"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"e212eafa6839f7b68cb61247afd254fad8dd23f87d3ebd5e5ae82ea45e267d02"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Directionality/Case.Directionality/UI/form_Main.vb"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"a14cdd13bc1808fcbf0cd4e6056d1974ad5c4da2f8e5b027d46484a94a7a944f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Directionality/Case.Directionality/UI/form_Main.vb"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"54bfa60a46ee5fb007352b68fa6e174d2108fda01da7bda3b13a2f2aea0d6de2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcc5dde9afc68c8f431504138da1a35e4654ae5b43af261a336ac3e15962fce2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"321744f58e3092d1a64c033c3c0157239813740179200367c0bc1e3160dcb225"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"63ceddad4c2f84a249d1b4e0f07aa5db6812cac12219e5b7b8be558c14cb0bd3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"655e7a41cd7137cb141bdae67227ef42df171f906718cc1d1addd33cc622a1e9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"8439ab59f0575241c3565d4313435c8ea49b57926eed47b74c5ef14c01f6f549"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"2190df2a39aabba33b0a8c255a2ec22aa7a9b32f0ee66a02d8230338d4d94a52"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"7eeb9dbe55045af4486534e84b1e14242c3b30fd8b3655d1920cd74ce090734b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"69a9b66439e1a119e5963ae123c03d26acc235f252a0857484e6a750a4020839"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSettings.vb"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9a54a24b5a283a9c4846a01ccda1c9e7dd2577eba6f5abd97c64b61588ec7b1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b4948601cab6237266d472c48e6b966e3c03e1faeb9ecef11f60dbb477c1695"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"2109cf0d4c831432c14dab1b9ee7fb63dc874d7c55d4e81b762eed5350b88f3f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"a13d294de49ff5b09827cb1536c4b1067e6050b9e2bc521370e3434422e9c0bf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":392}}}],"partialFingerprints":{"codehealthFindingId/v1":"e73423db4f5e30e1fc6ea03ad4fce7c5149e88f410d5f192b26b5314dce28d36"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"43e4471c66636d861a46c589f3370ebf5b517d07b117db289b805f55a14af439"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":487}}}],"partialFingerprints":{"codehealthFindingId/v1":"94b79303acff073fd80037ca734b4941755350ea188fa4d0ebef1b4448e34ecf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":497}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ed96390594127b6f8b51ad698fbd9030828ced1c30b0d4e4b94b05e87cc271a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":524}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f1983909f3660dc5195bfeae206cff804614d7ccd09afc8ceb0519793545605"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Export.Families/Case.Export.Families/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"6063cbc4cb537f884cfcfe11a5d3e0119ab3fed881ba7deb9d2904f939e7b5f6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Export.Families/Case.Export.Families/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"12118a43ecc20c01b1ccb53e9138fdb9de572cbcccce03b67df236b095b42558"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Export.Families/Case.Export.Families/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"02be8b8f6105799c9e36ba17ede482b8c5b13044987c41f1a5a7b0e0b2fd47bd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Export.Families/Case.Export.Families/Data/clsSettings.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"d23c848b288eb60e9ba6cc9ecc4b23f5cce7f3f7aebc134051e2fab0b037fff1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Export.Families/Case.Export.Families/Data/clsSettings.vb"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"af9cb536b0429e93ccf99bf95f541988e4fbccf0a902f6704eddf1628cef4777"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9c559dca37b73920ec86317f3be9918e233a61088797b888ec8835373762bb3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"bae8addcecbe0b7f930fa73c0875bf80a3189daf8f61e214df3950f78e633083"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"0219af3b79d456930f2d552df1bb38a859cc7e645e005dc2a3b2c5df23c0d427"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"68d74aaa090bedbb0569fdb8ab69abdbdf0d09171a90254cb84bfcd2a957d1c1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":333}}}],"partialFingerprints":{"codehealthFindingId/v1":"23cb3fe761dc757fb629ce84a526a54e24fcf6a66eba9fcb83e7aec9bc352d27"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"c29f242eff0ce59b5f8396f0c64ad2b65f5ae99110f693b29dc8df5a8673a28a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fcad23bac666cfa6b192da504ab44b0c83723b189884cb620cae965cdd186da"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExportSharedParameters/Case.ExportSharedParameters/UI/form_Main.cs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a20421bcde932c0fbbcea97cb7f9077c20222d563a8b31e31f8497d7f510089"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff746277eae432c3c0b4d65639aaea30168244a09bfade1940d0ee8b30ab122f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"16f7346e8b8bc54dfbecc98d1a856276dd16db6635d9399c32898e94a5d2291a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fe8e5d1879ca6ffeff6024a809b9250f129a2d420585aef925aee33a6b73cf5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"02ee286b049c8b4ebcdc8cd1c213b152fdacbe8bc4df670a1483ea2e50d2ae34"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e5ff1d5840996efe163093c1586d1bf21a34527a6c981b77a743ebdf26674ba"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dac8f508b92199231fb7f5f263a8d8085fb4ea793c6e15a9adf911e4a174f5f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"18b5cb23b857de601fdef943647c3b662137d19620d6f7abfcf96c1213df0107"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"370e203cd5d650e7d64732d521f8a1d81f96c5277537aad6cc64eab2215bc570"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"036996c4b9dc9db9f68332d927fdc7f0259e379763f520720565d7965e638807"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":361}}}],"partialFingerprints":{"codehealthFindingId/v1":"ece29f838b63b35d97a00bc378fbcae0216c8c923c8b1ff7cbc969a104000747"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2e2554d7caad6a464da05d5f8e0e5f54a51bd42d14ad12dd094197650e12578"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":417}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f56d6295dbb09d753bc25bcdcb561e245ab4de5a550ef20b0f220d963fd43a0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c7ad8868abab161cc5dfd0bb689ecb4c0bd0efd44629b073050875bc30d0d8b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":495}}}],"partialFingerprints":{"codehealthFindingId/v1":"35e163297ca886558a54acd81c52593e4b20612c02fa9a53b32193937b438066"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":516}}}],"partialFingerprints":{"codehealthFindingId/v1":"37894ac162d0d62de667219a29d1456b752c1c06cc07a5605585983fe88e194e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":559}}}],"partialFingerprints":{"codehealthFindingId/v1":"de48f4e21a2797ed6ca109d89c04d364b1e314df500d3dacb4b13ae1c2fdd7ff"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef4134df75013164239845712d399e3c3c01703d2ff1bddb33613dfa14a4d0a1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0b28e37244cf80cd2cdc371c8fe0733c635cdaaef1ce435836de6347b32d5fd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"45bfd8f2e3ba9c69b16ac8dc12ade1a46cd518b7a7e0836e1bf40a53900d79c5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef93e48a69aeaa99a7faa58371028893c941be7de962a45f8fc4b6da777c9555"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"41221b12e88f6e7b6bb652cbf24f19e5ef404aa2f6665e3fe6b88c3a0c2669c6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cbc81458e306762ac2a0c850f1e8647e68038b0345f3d68e8ffdd8bcee4b00d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"2284a96996a76891dd4dc4b9fe6bca56e57de9155d415af4c3a435e8435ba633"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"195204e32d74e3a03c67ca015a147d9843e8795f1b95fc2598b31f5f3502942a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"37bcf330b1496d2d1c32fd5894bf9f4dd86eee62b0c0f9b83d58ade63cdd53a7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsSettings.vb"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"c415cb6ad6b1984a39573caf76a25988f062799e377c082ab8098063eec285d1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"f925b349f17e32d0db19fa35723cfb5ad6f04204c3f3d40340c57182a9eb2c49"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"154cfa7158a3222c189645b3455a0068efec7e6307924f531914b6dd7655cc0a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8a8024afd278d57ea98d35f9156bd4f027a3f6a133ff45d434079fec102f7b8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f4766554eb34bb7ea5f91d0091e3a73fd9c008f8c69bc56a10ee415e012f0b7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"a798980992a7b0268882cc83ef95b0638cb737c7879b9dc3d79437d4a307df46"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"d95e78444492a368d091ee1723a80ae238a8bd20fc840103cf72c0c9f213639c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"f29cf383d5a5dacbc170d00cb8a2cae1273a6bba8df895acafb3d856e6cdb85a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ffbe65e7b983295db3855327e6d4eac8d5adf5db4aa4963aaf9259c0233c257"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"b34e5b54aa34e2f644a01f0b9f1dea14580f9490a847fa0763c839078230ce3b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"5045b4279da8a80547964d913840dfff756867d65deb7626429ef8318ebf9d7e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d018dee53f7684ee60ce1910a368861fe26f51c28d36676b11dc720df6efb9d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsSettings.vb"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e175c33f2f0e6e54cca90e7a2d7128738139a6c318f9aa21bc0cd6c02ed1779"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsSettings.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac1f753332f75dcef7ea7ccc1ab4d2dcb321defb69902bd2be3075ec133dd4f5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsSettings.vb"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5b1d36e7b39e9ab24d2ab409e0fbff93d9adade7418ff0b69b792218ce5b01d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"60f2ce39066f25768d27a8169871c511317da915e1a64e7439bffc94e58be282"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"2aba542bdc1e1323be4430ec3d67a739a344bc6438c9a51637821a31b105cf15"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5da185de2fcecdf55de403e026e8204219507deefb2bb2d00aa16450187b08c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ee613c599b3a20b70b84e8db6b6fff1f50f01ee7996379b438a8f6aac8789e5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"d616e377651d68be61b04a1424a72fd171c3461f606c2e021d85143329e3eccd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ImageToDraftingView/Case.ImageToDraftingView/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"84eea2379c0afce7a177489aa228c528da4daa890984518e471ae687412c5778"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ImageToDraftingView/Case.ImageToDraftingView/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"639b6edc3ad5c612e9fb11866bfc1cdd410b727562c0f40ad64726fc88012b2a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ImageToDraftingView/Case.ImageToDraftingView/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"12fd907a8795ab69dc62bc3d74b79fbf6fe7eac0630f81066335d8fc151c7050"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ImageToDraftingView/Case.ImageToDraftingView/Data/clsPara.vb"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"75c491fe7e9184fefe57d17af94122bdcd200e39eabc512284d2bed4c51dbac9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"b80abab310fa3766078a573ffa93d40fa21abc013b1436e554a1a2a4c71d9e74"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"80016307cfb32507e078c82833e6cb737f01dc00749de233fa6e8a5e92ba6025"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4012565ea102a798aaebaca7adf9778f8a9c342c11af91352a890613fd26816"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b30ca92228ad0563501aad6f0cb60de5081400777c4aba2ed993bef45f1b253"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"b02f5a8e28dd50d3e9a5747497b43991a5238f67c8436381eabfdc9409995ee9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"5dab839c0e54b93b2ba1867e6c5ddd274e699eb302fc9dfb5090465754f47652"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cb02cad9804e5861608b618496ded0a004d97d41bc6cffdad81d2941413ab26"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"284bb964e89d0fba8de9d1c3ac465a56b2464365dbc5aeacd5b6274c1e55de5b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsRefPlane.vb"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"08514168405d266d3879fe42fea4f91b6235fd79137733a59bc554df16356126"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"a94a2a6834580d037bd0855766d16dce6c8c1dfeab5c9cc08fc4a2253d1c7033"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"1452d9027de8454ae3a6fba1377a95e571311944dabeebf5dad7001c7a7edac2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"6725d9aefe3dd862be8e491110c0cc861717d68729f601c3c1614fd3fd6e893e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"7350ecbd9296c49d8cbebdd992d1e80957b7696dbc765e0203f5ebec09a1a055"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3d4efd30e9a98c8c8c0575cf5574e8b1ffe9d6df97374d44e556e534d085685"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba95cf3b08011288a98454272b881a0b30a8b4ceb9b2ce6c1173d667a79802cb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"d250fa6acc3b40bdfd95797251f15aa24e1892b58096e23184b4fedfac24c0ad"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"804b367ba4fb4b29113ca572487c670d9841d58c0e01c569f2e310b63105f228"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"a083ee6d438d602d42c2f7718bf61aecc0ad587fb730a9392f1151ecae3c77e6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"2216c1bbead3f0670eb17cf99ef4710e93a563a32461afab49f26d5595f3c065"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"35f4825ff132b09fc669985b5b74a465e86051da47ac32b87bdb838ac6a92dda"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c2367befd2b08b6a76685c9af92bc3dca3eb0bf5d172bcb48f39373f16fc93d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e888d9f8c0c57ff6418737ea727b25872cb8f1ba8be944450f274940f9f736e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"a794b88673de7d528aed92a88c2d25ea0b4cf3f89e365f3e3ddcaf0b5034314a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"c95d36ca4df38a5a5ae27c68b8f2a76314b233d03880434a25eb3d988a7a1114"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff3654c119e22724d8a189c11ac81902f5bf4b505f8b9b99cb89a2c6cb0728e9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":373}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7b52884c4a525c3992977f4b97b2c95e07bab8c980ce151ba14847b21df576c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":378}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b029da94648c2bed389e51f4dc6ecdc4e9c57cfa515f0057afa124335e58552"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"f03a81bf41df8d70c07938d34a4bcd7cc0055cd26c76ba70065f13e90f5d3c54"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"3756e2af05d9ea650a1570e13508c4ee0248ec56532d934acf5fbf1ee2067500"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":439}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbfd7d49777b93bf6e56e424a553af9fcb25beaf91876f18ef045c4eb6850cad"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1e971d07b156f33fa2c43184b0e9262c4e2dce63afa41166faceeae11315c5b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":483}}}],"partialFingerprints":{"codehealthFindingId/v1":"25207fe5ffc8a1faf678550a2cfc92146bd281237bf5793173578de9e87310dd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":499}}}],"partialFingerprints":{"codehealthFindingId/v1":"1868233fb309402da9b21c5d15dc512d57b80b39342bcfada654dd8616e38262"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":526}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2359df0a92936e3f0e479d536e6017adcb8cb0c9c7c5a28a777ea32008d84f6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":531}}}],"partialFingerprints":{"codehealthFindingId/v1":"04b9c741880ce8424387a072d7ed5c2c2d651f4d8641ceb029851ab787e325b1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":624}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ebd73edab98d336a517b60fd7a773856b9fc7b08d3e5178e08a2cb6d42b9380"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":643}}}],"partialFingerprints":{"codehealthFindingId/v1":"289da9ee0bf819293c9bbcf92c5701b38487aad53bb3a8decc2a51f874a9c1e8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":657}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e16063fee89091d9856ace416f87f2e320b215fd39c4e5b5843059cdee8c739"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"27df1c79e899dc80df56f604839c64ec3e2493128d9d9c069a403ff414069eb9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"63394be8681ca13e1fb3cf23a990f7fdba160400ef78177ccfa4ef5e3eaa70dc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f2d83b9364a62550c126692b287c38e22689b4b1f9865a727566fdafd9a9cec"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c15e0d8a7229746588025abdc53a79685fa52cb76b8e97b3802e4a9cae83ad8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"e21291a116a2475e22dd05c75616f595f79bd43311f4da0a9d603c1328ae29dd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e695af94207ffb6ed7dd17de9c4f8c32e7e59a36acee91032597e26f2d535ee"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"f02b4dd2241fb0a7339e639dc0fe6a80406a0682b8f2e4c2427ebb799f8e21be"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/Entry/CmdMain.vb"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9c8a8ae1d56a89183a6fe362c74b1143cef3254ba9f4b84a122c6b561920e47"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"69a88d5183c69290ee57348a8acaae90dfd94ec43e6833a08eaf289a63bf98c9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1d1deb00f0b2f7f63f369f13a1814254be4d5d8c76eb7cb6f09fb586180f192"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"d750e334a4d8c6ff1661afa9f73c9a99ccdd4c66ef1d1b0dc5cd167fbcd60b2d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fcb888a7bbf92ea3b63c1c9149b76ee6402465c2271a0717196c88ce35a398c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"b82f974d5fe1177b68ed9a31fe1f4c9c68f0e19cc9cd9dcdd63c36dd639bb013"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"7aaa6e383d0cec2cb21a9adfaa51e74ea421387286ecd3f23bb70df72c25a047"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":377}}}],"partialFingerprints":{"codehealthFindingId/v1":"b88dacbf824290c3085ba4d2ca9bad9f1a62efa0f0c312dafa8b0398b39a1a00"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":430}}}],"partialFingerprints":{"codehealthFindingId/v1":"88b3e4712b753ec83aa4577a1fbba049eb9594dca663eaf1f18f3024e4e7497b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":435}}}],"partialFingerprints":{"codehealthFindingId/v1":"15997e774427e7d3c202fe4c261370dbbf4f6e0817b6f3ea16386d18d7e1d5ae"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"d468058f7dff86bfa8bcc2e4c1c5f33e2d1269a349d9545df66388d9607c5674"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":455}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b1f9301acc2b65f95bcaaffea676d078f18dc4a1073b424100d551cafe48f63"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":458}}}],"partialFingerprints":{"codehealthFindingId/v1":"93f5da8e0745046abf635a5897691d0ff704eae94b83e8a2d2c08abb707223b0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":484}}}],"partialFingerprints":{"codehealthFindingId/v1":"d65ef0ea9eae6b8ecaf0df30590e46f3006b9592d7e849a7bbd226fd8b3f2f28"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":489}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebbca86188201f7b9b546c769d6ed207bb9499698e083c1ab491008570fd86b1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LineChanger/Case.LineChanger/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ebf04a5c5ee09dba7ca563f6225e6481dcb52f38beb655721939095a73f7011"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LineChanger/Case.LineChanger/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"95d61e8715b3321f5a0c722673f0281887cdc6c8ef1295c31af54adfe3347b70"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LineChanger/Case.LineChanger/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9043c22f03d7f205d8d1bd53f5c1e081dd3816636fa4a35b9fbda6ca19b37ea"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LineChanger/Case.LineChanger/Data/clsPara.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"55ac48110f6b62da3de0d7edb75650be223f1f8df4ac43b0db1fa92828e1ce9d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"05a72b9faa96bdbb190c7e6be9dde6d10ccf21849a231720cb8e50f4ae711b00"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb665947bf5c44798ef8812cf2f1b4fab11190d535e7667f2ac0564f73e4b411"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LineChanger/Case.LineChanger/Forms/form_Main.vb"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"11ff15fab721adcc9df4e8133772315aad46821a47c63cca8a30b23183b50a8b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.LineChanger/Case.LineChanger/Forms/form_Main.vb"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c4d65bf5a63ed0379dba6a5ef5ac055311ffc5d5d30fd6886751fa741301487"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ModeledRoomTags/Case.ModeledRoomTags/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"24c5051ff37ccd0db1473e82269c7392afaffbe6ff2673a05a8b21d6daf0abf9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ModeledRoomTags/Case.ModeledRoomTags/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"34577a17086ae4281b9cd6db14b0d86e57001bf83c76afd8b6bea8fdbeeb8bd6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ModeledRoomTags/Case.ModeledRoomTags/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3c80113968089dfca7cd6dc854d5d2ee31cc9c447ac30388fde816b8fb72d78"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsPara.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7316e2dde10bf0efd5a5ee1c3c59dd252e5554bc38a92c5e6eeeaa1d486f80b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"0342f8a1ea671bc2f1707f3321b534596bffa1a512e85261fa5985b498855b71"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cd6151dd5d49460eb013e61915a72e64ab5b51c6759096c3b3c1ffef3f4427f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"33a04f5c6d282b7fd564eff874a57a7fd77bbee4dca996077f5f8044315d200f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"17495bd7cc15f4362f0d00d24e6d0b59cea727766df7fe7a3c0bc4dea7f97298"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"af4d9bd68ebf78062498a9479f5164e644aa9513848bb31188da00dbf9ed16bf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"f602b0ca657942d234f60ee99d4da625dbbf90d82ac1039ebf31ddcff1af083e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa99b3855ecde9e259d843fba1fabb898b4f305253e0da148d7f22caa9ab8889"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"480d1a64aea057bbde494d248fc0814b992b082a5a9764a2b1236b090a9ed0ee"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"e66c24006a3ffdbeba41588b98cddf63d499217193cea37d4a2c8f123d968442"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e599a3d59afec6d804a2865bca2be844e8f5839e655eba1f2ce11f1c5f2fb7f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"560d8c79e1a8e7ed449548715aae96a1b18f0166de39aa86bb81e1a252b96aaa"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4aa486f01dfe4a1cc73e8f8053120ee8ba428605036b2fcaba97d1977e15ec7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"218498f402fadd8fd28cc75af67e7ef571eb2f3b97f59991251e76b30c12465b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"649701d3f2f37ee22e2ade2c53cd048be27598005cbd92fcbfb60c70db4721f0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6d5a1e95ce7d583569e2e8ef3b1f9ad67e5e89ea631da9421f00c371b21780e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad755640b60d57cf3e2617637bd05770668908b87057f9ad61af029ede0baf37"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"b53ef008690d555f25bf09a47581371c1b60fcd18eb37c56386f0ed5946e6741"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"280105627a30cfac1a082fdfe51c6bc9f318837b0c3897f951472d772201c36f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"33ee6573e6765b2ca325e25cfc21687a3deda882cb7930f5e07f1208d709dfe3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b7a2c7528645d4cce48233cc13afce0d04cf712baf58821c194e624af4dd9dc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f81d6970b2fdc5a656851080355a764caf8faffe00d1697dabe097e59738820"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"93bb27ea5105ab5dba0737ed9afa69fba22f49726fdb24148e5a8fa7df769a36"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"975516dcc5f3751edeca58a47c4f98ff445996e17e5ecb0b2430b21ae7bc85d9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3fa05bbb5feb5331a9d167295528d306e6a10564c80e6a6e0d8d0d4a2954d52"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"1eb7d63ee88c122735c94b642bde3637628874e7cca30c2c9f3f173db67f86c3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"8717897093e4199260ddd4a0239f8d630900f3d6e65eb70d719b7209f8212128"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec1410650c6261796d487b1b5f9594e6ce3ba4c149462c83587e97b946848a86"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"44b0952976a8ff1e446f5a111e5ccca8605213be31bb43eff08a5f37e1caf733"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"aecc7f238c5882fa890145b52aaf9d0f55765f9a717f4de29102ca523f963dd7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"19e6430f6277c92831b5caf635aa39ad3d2cd3258faff3137ea00fad899e1667"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3ed252d7750e1d10fee48ab7db4012466a9b35c4ace0479423630cdd06acbd7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"b549c119c438b793fef90c979b8d22920ba92f765847c3f2d2ad89d6ae2212b1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"f97545176d59e4af415cc500848bb8c1fb86a04d7c1cf13a8584bd2b5be826af"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"855ae28a79d24a20215cab1dac574fd66acd995c7b4dd6da0b452e753ea439cc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1a11da775a1be0ecdb93634e6cfae14fd9e470db0ea3118587a196fc62dada4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd1288bbc067470f10d3ecd6097ed86a5e4c23089819c0e282ba5d6917b2d83c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"752f985a4c9a4afaf70508f0aba7946e5507fa01186344185785e66f00297ac2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9fbb5eaa966224feb17f15d168f5a75b8ec8cccf9d4f7f84daae120bbce5103"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"8eea068b81f3d5bd2a4fe6b0e049666f6d66531c5afdd060f86aa9b6c5d6a275"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6cdd69d6c5f444d88c67458fc0ccb0faac5d52c43fd718f9d1e2ae24a9af183"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fa2fa26270586702ed6afff970a309739d111fe94e8383d63bf87b38bbd2de6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ab56819376475df1f10519316cb4e32fe34019615aa161dee70f2897ef5a8cf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4fe1160c7f03e6611e95d34db9e9a054a2c762a009788993f94a743b58d64f8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"418527f1ce30d1b47caee5746e606c7ea128113fcc856b4f776f486cc1246e9f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"9030ddddd4e0820886dda3753d3285c8a1de814d8ea74d5396cf932017d57fb1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"76c66bce028702e8d5485c31e898ffcb224c4a316d46a9f1ff77590aabb390fc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"904738f0e54d1aeddb9b367c96ba88fe6b42ae4722f777d41c10646f7290c5b5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"a10a24e7194ff93773ab7abc65a4594265093f8322756bb267b2d4fb9cb45e57"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"8baa22fd09b12cb1961cd543c03dc9643b6fcc999c6bf819718a0dc7d1c8729f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"86be7392209209f91cd160d80baa4a5951a8b2d4169a8942a84126643bae6c9d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb6d37b2ad1a3dbd3dc89b7cb141889cbc6f440da481513e62374a6c205e65ee"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e56224f7eff3698811a9810f56505bddb79add206dc7f13a5934f090e236937"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7628f647b0288904192e30b8a629cd810a58602d2cde7514ccadd452bace3fd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"53c4a5c32f7e4e842ce726066ec80c2e119835139e910de48595e0d7c56355df"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"adaed4218edec8ab0999505543184e57a76dadd4c2d1077f475c3e80e322c5bc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RevClouds/Case.RevClouds/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e7d549c531ec2791b9911fd3a6a2b49fe9aae2747a52102e5bfa6925e72f0e4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RevClouds/Case.RevClouds/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"b584a626539e0c9312ae6e6a2e1926d11856102466e320e7ea79aa96f8a3c372"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RevClouds/Case.RevClouds/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"226d5e58b079fbc224c24ec005ffe49a77615891a83f3bd42027120bcf51d086"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RevClouds/Case.RevClouds/Data/clsPara.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ae6c285bc8b4e2d706b8c5039330dc3fa8421b48d7869b004075daf5532152b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RevClouds/Case.RevClouds/Data/clsRevcloud.vb"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"077f4e9dca9c138929d30152cdfbfce36c2e48ec71ade4ff2a9e739ac914819b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RevClouds/Case.RevClouds/Data/clsRevcloud.vb"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed9640382d2b32e1a6ddcb89c6601cc8f04359887a37ab9db21b652bc9a98491"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fda1c89eb820dabd4fe727bd315c72a5bb800ff23470c2c67747ffbc25ec89b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7a7065deeb1d43e5a87a3d9f3ebe447dea2542d9bdf5f6ddf72acb40f966c20"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"4db051b5f8d516c469d805b17a4ae60ee48ce41062346a1020bf8a197dbf982d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbc536866fd2373769c55ad216e533eca1b9efabc467063e7b1ed0d0d7a7efc2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e1f4c5779a9e9a2644ab5a7ccd34cc52aa9bc03c8437bb20c450c728391adaf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cbb69b18bccdb0aecf8b6ff975f02e3e0d360717a17d3820323b41d016738b7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"3eaf6fdec1b16f1a4417bd336d709c2394e2e017a3085fd805624cf8e2aa5a01"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee9f7a233d740284593423d756fe0595d9cde1889be4c1315577ba2600af01e2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"0187e3e4bb4f898a2104b08aa55f33fc335b10a0b3ab664c9c988de4bc8caa85"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"32d54713b795c23ea8829f2a14cf0c0b3693141a36ce65927ef4da96c3665a4e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"54aa7b5008b84121e2ec8480e19ae28fe92e341f1c7b4db70a9acb54609ddee8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1bb0978f98044e262356f7c4761acda08007fbd912a886c615b60168475a3ef"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2367a84c5c14fdf986b57e9212d96bcf8431a7228e3aa8473bc5df9b94b91d9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c21baf875288e6502d258c2a1b55f0e59e7ac8337430b804bf93e78515e9e4b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2662a9cc6f3211e7d568b5a80f833a421cd101d3164405a242b16556e1e0ff7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":420}}}],"partialFingerprints":{"codehealthFindingId/v1":"fec063f3c513206cf004760288c16ac001b8987f10beefaa82633eba0dbec0e7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Entry/CmdMain.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5d2949a1f9d1910df79a1fad5b0f433ace14627780e87e82ab243acb83567f0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Entry/CmdMain.vb"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf658404213d9981218899c48fc21d068c9b0e3e2a2d718b10f1173f547d7285"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Entry/CmdMain.vb"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"95e8a7e6b4976ca0e0ebdd9985ba5a8f314b4c769b50c0573fa019b67958d149"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomInsertionPoint/Case.RoomInsertionPoint/UI/form_Progress.vb"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"78a6cf2ef74f78fb0f7e747ffe5cfe5697a0c1d0a6799644c42517e555d447f2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"5511a4b5d4053527a7de5e18e0aaffc98b5548364f01ae32ec73532ebe7bbd8c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"246e1627c2b5ce69a37a12b3e86bf72697cbf6771b6c9e1b9ce71d6ee6d839eb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"be4c89b085cb1bddd734c3be74433ea368baaf8649e4250fb1a51e493a5d38a9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dfb5860d4d3b6cb46a6363aaa9e5cf5a941e0c93ce41be77ddfa3bba5690743"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"65076f530dea169960227c223db3fc7766cc3b40e1037b2bdc5e7759cfdffc16"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"25d3d12117cba3240621aaf55af1ce6069d0f03af697b813d4fce31166468c5f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"e226fc3f341ccf280029f6fb04ed0b7b2ef5f8d06ada1a334b90252d83a7c764"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c9e3fc71566eff850bda2d6689785b4adbb70feabc1a7daeb14079270c343e8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"302340d54a4872ae02bfef5c091306dbe18fbf257f2a002353d182c8ad2d2922"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"465481f751a6f8ef0d2f7e9214e12684905f0fc759e909042aa4ab7f1a1ff3bc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"f957dabcea268ace92ccff8218442a30492b0ed62b2a6726f2b1e57c7eb53759"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c4ca858bfb2b5090de3aec2c863913d1eca36dbc8fd9f530356207e47ffbd7e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a144ac060693f65f0c7b56edb5ddf735b43548672a2c97a6e202af712aff29a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"d94dfa5c6d20d98cb611e976b5ec46032d96f413f1e46a3189a1694754a82c92"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"343b0c8cedea706fe25affb10e43d86f67d9508c89a849dd1a3cc3ac7427ad16"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbe1268eaefd0f6cf581fbf6a0c345597ed4d22a4e8669ce245de5914de137de"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"91bc5301bf01d7eeab8d2b7353441fda92f06ff10dd2664afdc32712a130cd32"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"455c1905799cee094c08ad52c98e7e572a26fb4e188b13f9681489f5d78c5906"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"40555d1305f6d4610db62a210f04effe7dd878de5e6eb156252a41e81b4f1187"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"122096d94e365779dea39110c621245b8840dceab23d8f0889ca9e5acb4cf9e7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"f01c9197123d37e4dfbe8f9c42c7f5a08cecc91f0610c820ebae8e71ad9edeb8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"63c52d0a99f4e36e0cfdcebf328733280aa41d0fc0d889ea5bfde5fb74d21bb2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"f200c6725e624c42c8bb325f1d27acaa8cc47d51eb24025ab8c700230d31f785"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"29fb6eb33c61f1f71d99795d987e9d2c55ed5c0a17beeba22f86baf14843cb59"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/Entry/CmdMain.vb"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"eda2416ec58fa7adcb5c6717edf1aa87cc4362701206f47d83dd84a555474d4c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"e341e0d73992e36b28fdd4c5a0e45a31983ccb4f15caf3a74fc49378013d0a0f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7d59ca8322ba4c26eb06d03b58038f6a589165044abf1954becebe7b8dd6fb4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"66834cf6c13a853f0758bcbe23fb56b599fe5a28752701bedd1c741665eca6ff"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"acd49b59673e25ee691c1fbd8d4ad12a99b52dde0f0750016c58a8aaa90d6115"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"db178a0d442eb52a198264ee4da04242340b365a3e789b35e43f580f9445e6a8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"43fab159aec1665b69dfce488a4d0bf8ffbe7bf3443bfed5a052631d004ad606"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"30d2dd806b741cd15beb1b49c4517f1d6eb15c605a63fa943b3b2318e896ec38"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.SharedParameters/Case.SharedParameters/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce1ad714d834ff6bc710d567f72f866e3bf939c3d4d040ad9489886bf0c8596f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.SharedParameters/Case.SharedParameters/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0d12b44b01190f429fc4ee9fd98853173f61288a00d4ce2fb62d4ef7ead8785"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.SharedParameters/Case.SharedParameters/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"23619d1807a0daa2ad7f0831187d6d31ae0f4cbcdd28dcb78862495ce836ba8b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.SharedParameters/Case.SharedParameters/Data/clsBuiltInParameterGroup.vb"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ce89f2599d9615d164c28e6422c412e43cc521309c82aa94811949d799110e0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.SharedParameters/Case.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcaa18ae2e396c51304c644e990c5976af21903436a2b7c0e02105745ff40b23"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.SharedParameters/Case.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b52e3f69c862c925281d885c245760e11fb05a6df2d4a7c97b109136e8eeacc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.SharedParameters/Case.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"43a45772a52eac23c7501c8433e783cdeb359d00ce9583f8a2d7470e4db42283"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"c576811a874da36cd1e9fc42418dc1ce631e55ed813c5ad3a5e2659bf07f2343"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e60255e5b7ba29873e969a4d42dc6e1d928d71062a94ce47d87a9ffc209236c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c28a2be0d5353b0d698f6c63115dc61e9cd8fb1fd974c6ffe008b52f64518c6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4d08cf844bc9a6d5f4ddf6457b87eed6ed661d5d3e53ecfc20ad042cccadb0a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa3d4d31d974d2f2f897f18c2d99151036f79797c4511a1a38d884eec562b7be"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"79a53e85a124ebe5cbed3d8851010493c5b66bd7a67a2663a83e8a4a219d9fbf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9b365ad019c11364f81b5a9e18477f9199ef048d671bb210640de11310b80eb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ae7bf20e861ccec6c20072936611ae28181ef09bf40287f7950f64c784f461e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbe6d80a72378794a3d40834600085faad4570212fdb661b6f7515f4f2e83408"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"afe07d095ca0902df2d25e8516c4824550fcf9605022a0d19fa3e4fe545dce6f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7e043a2eaa70792a9afeb81eefb1e12f7bc28bf677e721bbd46559fd142418b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"51aa364818519a0bf532ee23431c9a22be3bb254264a22fb80598eff98bd9f7b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce4fbab4190794e50b0d6de29bae3089d7d03b4a0e757a9bfad1ebc5dd2fb98f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"9eb26ac04b30880a5ba338beb73775940ae9e8ec3e7bc47f0a818b01c9665f54"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"295f9bc1de461892450ddc5e66c833932c6ec7746ed175c9761ce355d0826812"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed5f1ff29141d601f836e03032cd67a34017e10b36fec95798e780790dc5e70e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"664305b929bf85a06181503967f50a378534297a70cae0f3dae22f35bbbe3d93"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e92d9bafa02878fd106dfcbebcabad17c6d8c0ba4b7dffa226c05c1ef2f3332"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6c04bae61c2b72760c3d1ffe566dce30987ffdc3e79290ac2a69ec01503e446"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsViewType.vb"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a53644866433185fd9b3764786e9868fef08161ef303259c7ad4487a63153d8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsViewType.vb"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"337a8de7e3eb29ce60046f72bc9e03bc0bda0838b09637c7c60fed6e5fed286c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsViewType.vb"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"c007406aa4e297921602b02785a30adbb88fe181db7ac894628ae923f8e36870"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsViews.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"723808ac1ab3183b21fa8ee9702aeff367b5e48fc42325d27c20ecc6dc359b51"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"2159c5de2785d642eaa8757535075ba3325729470ad31b3a6f3cc32f336c37e8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb149cd398b6b91c74cfbdc8dc26b2499a1ca64842e2536942c20fceed5267a1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c6765dce6d11ee96da59c218c915215443199f839109370822a58167cb18050"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac77f61ad1042fd812dc97672ff225744c7bced604df2d3ce67c4f25bd0f5297"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"f363ba781226401918189411c476160e86a9a9a13a6c9badc33556547edce0d4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"df663d5850412f2b0f1e8c009fad929a90586905ffa8e3b4d0650f454855bc7a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a5e8189ca15a2f0d66fe992a1b1b3aa99b99eb73dfa8e81ad77a1945f7110cf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e7d41acf5c62f4ef3ce0be537d4e8dfae32739594a9a70d4475d045d841b28b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"26358ac247255dab646ae54f26d976f20aa82e43a9855d174e02a6febf538f15"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"44df38d912bea78d53de2405aa65c9655ded19834724e8786fb90631292f077e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":335}}}],"partialFingerprints":{"codehealthFindingId/v1":"79dc06b44bf86dc22f4876efd05e7d7b0ab995c2aba734cecb686c1eacbbfc4a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1d5e9a7a861ae57d4f95fdb5b27fc8c68ea0da729f59691a5fdbd23121f0376"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c0542387a609a9a06b4045dc9bae23749f54956a09579c16b3fd55b8edd734f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"357f2f9b66de5d408467d225e10c8a49ce64864413892d9392f7a27a727e14e8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea3710b604957cd899470aec057cfc8e71b955f53b88f8b385623947e0ab4dc5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"677098ababd68872756a8c701b8a2775c34e8bfe57910505a585e40242450814"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"578d6f0ece70bb844524aa4f155a1ff3ad1fefd59e874d770b38cf478d2de295"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":502}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a46a8bd4ee0d0fcea10260b036be7c1a2fa3d23ddb2aa1250e15e347a83c14f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":523}}}],"partialFingerprints":{"codehealthFindingId/v1":"71978e1a4602a082bc5bcc9bd99499cd15aa6e07e895b84598346d867c6956e0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"64152b13c2751ade5d37dc0984180d0223fad8985224436d7992b6f98c9e335d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":565}}}],"partialFingerprints":{"codehealthFindingId/v1":"508894ea36e997bf982e537c63c26b567b42fce3135260b37b9a3648c482afd6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":631}}}],"partialFingerprints":{"codehealthFindingId/v1":"746ab8facd0d8579fd367855986d720d8d6e6443afbd7bc485d756d623b629e0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"94a551c111963c044b437f88d17adb21b2cad3a1ca17bb86bdbc4f49ddefa588"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2691fccd80f3ff637e8a62c58ec8c0e602bee23bed18a597ee7575c7cf2163d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":376}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9645e1774eafae85b0398f33a0dee1b48a276340880c3ff3f2ae1cc6ce1bb1d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0d66336b5366fcea01046459b49cf01b6a45acac8911272275639fbe73efe85"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":397}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9b3d62b3317d74f6309ee33ce9679fb746b824b4ef35efcf749f756ef3ae60c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":424}}}],"partialFingerprints":{"codehealthFindingId/v1":"cef7f56f7ef45189b5b8ef2372c20c44c13e38a16fa2b76360c988671767a8eb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa16e15904c9fadd5e4bf1beb47ef74c7779c240ea86860902bca93e9105a619"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":458}}}],"partialFingerprints":{"codehealthFindingId/v1":"27f863f703ab04aaa462df0c7c7095dfe3d3d6f1c333f19f6f6ce9eef7237e6b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"97828222f42f3b5c477490efc1302b986e716a35234135f1cc316111dbf2fc6a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"d03a720782f7dff71b378aeb905e9aac95f51e2eed3a5015c50b1eb1f51bdf1c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":577}}}],"partialFingerprints":{"codehealthFindingId/v1":"453a8c4c02b167fc438919128d03411ee6f51d135ec97c12f5b95ca716b9b55b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":583}}}],"partialFingerprints":{"codehealthFindingId/v1":"98a6b84cf70b3b50e86157c79f7decbfd8c59cd848329d5493a164ae173bdc9a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":625}}}],"partialFingerprints":{"codehealthFindingId/v1":"75746b8bc15decde5225b2daa7b17e910646912ed03c521011f1b9f5f5128374"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":690}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4d03323508f6bc6400ab330e8f334e342fc900ed441e552320796418eee9062"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":814}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdaae3da25036a82015cfaa99685b133336efd449b2435dc96cbc61bdaaf0465"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":851}}}],"partialFingerprints":{"codehealthFindingId/v1":"e138c905cc113d47118ced726d19a835895e3c15c5ee0346e262d3bbfd57e3fe"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":1043}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccefba68f850d36323803e7e3629858a0528f843dd1522007114c1f6d67f5418"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"6713fb7ef16f5bb6aecab94deef1fd5d8d378d5a9c2b42cd9f1e5edc146cd209"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"b02baf48ee6ee23a2fcc98798ee6afe010b4ba4764b0f6c3deefa90de6b4c545"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"91b44851fa3b2f532bb4c38fcc7fdf06b9cfcbaa53f50ca78a96b90c767c0d0e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"1eb0e65cd73c01fb1b47b012d64580249611aa64ec086fd03e72d80f9be33c7d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"e44d51d21bd3da5b1604bfb18eaae297ddb2037db42d6a081fbc0f8f2c1ce7da"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f571abea1951161cda47eb4cb4c827acdad2ab0861294c69683aeaf80825fe4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3ec4d283ec279c60d4d1952a3ee3c708dbaddf85c2927fd8c118ebd45493275"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf5c5c9b7a40614875b4d338c721b018303b3170a269ff4352603ad82980b131"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategory.vb"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"89fb039f8b579d7829ddaf221420133de147379754436e19dce17aadf9dcea75"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"eee7fc4bccc2c9e8e88a8c003fd04d3e9eaacf564efdfb6c44273ad0f5fd54dc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6effbc55cfdbe1251b11592db0e6d4157b66295b1c25b52ad7258bafd0de8ea"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"accf3c66e21f808bbc4e762e00cbc85b464be563ded035bd6e5fb7db5d82b0a7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbd66d3339a2d67dbedce524f43b292246a7e096447529e399c272582ff6c2a2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a8035a2dcd8a01d6513a0437557c7adaaf4596949fefd1b464e5d9d75ea9517"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"1550c0acd3fb348147d0303ddae827e4c167b1326b3fb83897e599e37372c3b5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"115f41786e13c77d7d0c477bc434c7ea35e61561fa0c6e878ac9d9f7ec031dfd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"b81c5f8fa4b5a718ead3168f770c2ee2765d36ddb838e70ba2db0dc20f300e0d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8a1d56f23484715e0bd248026d6d3245d813e658225da3938144154c32777a8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"3108572f8913553f34affcbb71afd96dc23e658f2f1a030875651c3b06888f5d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":475}}}],"partialFingerprints":{"codehealthFindingId/v1":"1469e463d97f4a3cbc05523c132085f8c20e155430355c3f360a15d6d29c807e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":486}}}],"partialFingerprints":{"codehealthFindingId/v1":"85e359a0ec9a3fb1d9f23b82ab59f1e89fdde65571342fe4dd071d51275a7f4a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"012954e5aa306649cf28d77eebfd50d4db63860e223860ad41ddf36f13cc3e62"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":525}}}],"partialFingerprints":{"codehealthFindingId/v1":"425eb92b1ed90e627d4e2053927b96e3ec0a5390c1de66bb7e5233950d64d10b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":551}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f660f8b395fff78cc30fa7b1f618371d91142f07b93d441f0086c8d64d72b49"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"68ed3917ee6942d70d8b61218509701903fda5963f0ec4db81f092cc90faf413"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":569}}}],"partialFingerprints":{"codehealthFindingId/v1":"25d0256f5476a808151dd8dc2c6038c7eba834cc5ec50123e265b88150644d3c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":602}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddb4c4db30b28c9eff67c9c6455c729694202f05945cb8ec259856d3b45e7fe5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":607}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ab71f7bef86f90bf4c8f93344a62605a65246c7e508616cb32d02e40b53ebbe"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":647}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f6f9f31495de7157ec19333fcf1d3bd9a8e8edb5e2ff88ff62ae5dd91f7d602"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":669}}}],"partialFingerprints":{"codehealthFindingId/v1":"23b1544f073b2f04a1f2b6ab1a3b28b1ec5209191c25daeba9463bc1b2d0f3fe"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":698}}}],"partialFingerprints":{"codehealthFindingId/v1":"a428b0b131801865070240b3f92545d50afe4821b26a2fc22d439e8858e0335d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":708}}}],"partialFingerprints":{"codehealthFindingId/v1":"3822530b374c98443a4bca835d1484f4b103a64064fdf0f54080be39223a96ee"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":716}}}],"partialFingerprints":{"codehealthFindingId/v1":"22ae3a811d399b3bc8602365dd77be4127a45f693a332315fad1e62c62102cca"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":749}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a06eaef0194e7eca8c3e79fd3982fbcd2fee65781d0c367db7746f4604df337"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":754}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5737465b22f135ee65d46d340489c9b1de10b6170fd770ecffc35055a0da6a8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":806}}}],"partialFingerprints":{"codehealthFindingId/v1":"61a47c2f9199e9ca25f4cce9de5ccb20155b2d226a20b07655c513a7bcec6e2c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":825}}}],"partialFingerprints":{"codehealthFindingId/v1":"3be401988ba0f552da030edc35dc6a2432c76ac40527a11fe9552e1b2f976a35"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b63b95d64f4c95ad700f79bc6f794c70320372dc7081780d55a6260bd873c64"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c303049adb76253b179196763809d09ffd233ca08c1e8361611588b84fb9491"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f5011948b142fcf5d245ddb85fdfde0b9f08ab3f6c19aa65be0277eaf0e2160"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"65aa51a4ee5ed629cbc8f1910dde1fc3c0ae5d0fb615c8afc9d3b492ca0a7430"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b4387c7f24e680409da7b3488371f6843b51811206ec91ed8918065d204db21"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"c60db051c46597baab7bbc2ad5916608024c8ad819925f54256a5d9eb732c29e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"c571a40e7baf660d9d11c96d936da7f41aab81b3e078db5969db35b266b38a7e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d1fcd9c21071a5bb2c95c9c0dd32a2417573946c74607b67688dd5bfdeaf822"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f70ad47f465374cdc8d109f913a04123dd6e484a30620840658267bdf0eb8e2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"89e1356ac4f4003676ffaf2eb55096af2c53729d15f730eba77c5c0b13d5c340"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb0f9356bbc0714659835645d1b3a09e9aefa5c8a1b8363f99e3f4302990fa9a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"c464c56b826a99926b5acf10f9608b4acd4657dd37f40a4108cc246c0ffdc907"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"c990eefba01ad25e2d8dbe7f0ab1c9c063623644e7f8a05b3fd490f89b7ac73e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"26fe566488965d14399e8e237831705b60c34fa0cea6ffebd6ff9a6d19b15f8e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e6a6a4ede1696d3a4ea3f7ae641b86588f0d62c312e552286a830d1c77df15b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9d0d47886fed8c8a10147cf3a45dcf19e41b027bb9400404c39022b8b700a87"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3f185d8a067306796ea9039676db3d863bb6f3fba98efca04270f07ed95260f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"04b1632bc3e25af47aef5fae4e7eb22779045efaf6660c734c8ee259ea7f3212"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"2da2fbfca55cdf084e93998bc8a07cc647fcf49cd091dffd9479faca781a1213"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"039a8f3e39db11ffee5e7b1f2fe406e309eec3f56a333007f3b944d367296484"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":407}}}],"partialFingerprints":{"codehealthFindingId/v1":"4423ee9be554b26a226592b9fcf98e85fdfffce8a109ada31a82692cd663887f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":434}}}],"partialFingerprints":{"codehealthFindingId/v1":"e36d0811cc2102c7b6a00ccdb8e902c45191e566f731359f8aad164d2b2b8e62"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"afefdcfe36845af8167a8b646bff09bf7c1a69497955a29519ac4b19ae577817"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":462}}}],"partialFingerprints":{"codehealthFindingId/v1":"71ac64458dffd8c8f60da379bab8c67c26776e5f10e76a610ad6c301c43ee535"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":526}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d482b26ce91bd20ab85975f3bc56234b05be59e9b7ea7b2e44671c1bb55482b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fef8f6ff9a4e17102e3763f0e892f68b9c99640d5888ba23ba7d76d70d9e046"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":612}}}],"partialFingerprints":{"codehealthFindingId/v1":"35d401df9fedf57fad16a792546b531308bae61b7de043753eef807b4b0dd94a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":633}}}],"partialFingerprints":{"codehealthFindingId/v1":"47dae066cd256b638183028037fe57ac2959952908d5d6c591596ae39001df4a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":654}}}],"partialFingerprints":{"codehealthFindingId/v1":"a908fafa0596b5b4c41d0cb2dc7edff9f8ce17b5629f37e0edfb0341b3f942e1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":677}}}],"partialFingerprints":{"codehealthFindingId/v1":"646d5b913bb53fdd674133d3ee3eedabc1d577b7c584bfeef7bca17d5af5244b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":721}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f0718a66b720182fd0640ad7f941b04e94044cba68e198f9fd0938baa72a994"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":811}}}],"partialFingerprints":{"codehealthFindingId/v1":"94e774a2a7b794147bda9305cb46672d6ffb2d0699430e7ab1f079b659bc389b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":879}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a771bf82c1362c1dd2ab55595ae5b414f8f0dbabd23d8f4f8e55e3897391e72"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":899}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f9f6d844164d75ccd5fbf7e348725bc172b8fd4b312979157155f439ed70c77"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"25c97a22b032fdab1d0d3fcbb5ef54e3812aa497737395e2289dd0aff6059d01"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb86a3ca23ce025d17f1ba81ea132bccf9245252cc1b227c9ac44b6cecf38c3f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"67b37ba128dcb5e64649a2322e999205fa7bab4bfe49d6d47b8b46f469e1860c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfd8c8a029ef6d1309b1e8767acaf3a61c4ccca3e97a5516ac2583e658589682"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8331def54375fcc9a798bf4cf776ea56b87d924b401868c4a741e4e5e6438b1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"36632d1550cc3637eb53496ec6862b8dcde26218323430f15a55e5206ee55396"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"550972296690e7735a3ba7822bf8ae99e21efd1520e97aaaa18908997e759463"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"12b5a957a9c7ba0243ab38df0e79c801091488279b5c47320d27e9f133e92bf6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c02d93499ebe0a57ffd0b1d45d2c219587a9d8dad8fc01dc71d36314ef45751"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"95cb16a3e50f986e467a10a25e11b06c45f04f23c8f6206b189977a163499b8b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"443e3b938fb6257b5362b7ddce32b898ed874bf6739b0009905850377e44fd9f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ade25f0e4d1a6768e7e83f64ee47d09cb8d85525836f2aa7afb360b4f1f5adf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"183dee082004b60e8169084dd957455ec9822666c4d4ed3607e3f7680d9d1ae8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":356}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f5a53a90a4bf04ce18118ef97cc29781985227c1b1ff7bca0414ddfebab4ffc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":359}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5d21d925593c3ce41041e85ec8ea06e575e881a7a3e7cfc8bab8af5d10a9546"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"efb65c6cff763ec2aa9d0345f75f4fcb4ed64a03f6d4ac8d80f1701762aab75a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"d43c09a25fa4d5a385edc1b3c28b189c3551618e0822d7ad0d1c3f9b9a063f5f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":496}}}],"partialFingerprints":{"codehealthFindingId/v1":"57ec8e79755eec6f98d293ef218068089c2161225b6e3f59f361982d79ab4313"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b6a2c4eb79d688c5792495290969a4c5d7f9328d9bd582d2b731591931f56b8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":620}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ed2c8a439596cc3ee3655b003d06d5c31a543da3b02359d5d125dc72fea5f0c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":627}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f61c611f3c28e312a86b6badf3fd4a567f63fd5637467dd7e01f5eaed7b0e6a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":691}}}],"partialFingerprints":{"codehealthFindingId/v1":"90f892f1d5e96fdfac8f8b7f565897db99ab673bf28b8ef0e3617ffbd5a27dc8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"0faa2b9c0091c20a7661c324a41618407263b0cf045c74587d20855efce6d76f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"53ddf939f1d62502360db1b32221d0cfae3ef8acbe64f0d07a48d5bc06ba2b0d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"60a1a150592df397be3a830412871487739ade7b22e4a160c40957f10b136877"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"50625f47a5d8c6057b772f0bab49bed83eeee80032f420a8a517d5148fb58948"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec7af3d4a96df5fd1493a5f30a358e090e11a306a5a6775f656c317cc6c5e844"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"466643cf91be37a95447b37852714ef5720adac33b7297c53e07f6982cb5b4e9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"92da66b18de006a952afbeed6e55ff5b0eff188162ed18371242c0cdfbf2eb03"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bea968b2fa79ce8da8c9dc5f3d6222f861a9af72db034a9b9e312dc782f8ba2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"88b305e773625a177d0c42ca98bbca869c7f829855074b4279f5de19677f2ac3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Progress.vb"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"63ff7e7ef2d7a25f3e5d872e29abdcd0c5a09e41398679cd0b3318a3025e041c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Progress.vb"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a7eb6ab98cecbffcc5660bb2fd5002d87347835bc16ef761162da9b2d0e3fa1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Progress.vb"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"35d3a5e8d5459cac1d8f3305c0b9a68e79d9eccc32992f8aed5c51a5b9ebc4a7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_SmartSync.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"622cad6652a129cd7c0ad3d784c6eda920748170979eefdb1f3686983acab1d7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_SmartSync.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"75beb7c5639a1de24ef8b6ebf57683cfd5c9f3304f110276eda0d90f06fcdb37"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"416d780ff4d6531b83c5375e6190967d3143d5e12268a330284fbffc31e39da7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"df05c5fc2c0ab500c5bf6a60b62d0be97e20c0a15c830a845c03be9b1e6ea103"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b739d64ac809cb9f52ecd8af79adfc08b4bace10e443098e28cb16b9c8db05a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":341}}}],"partialFingerprints":{"codehealthFindingId/v1":"9abc908e94cc7f0e26f2ea4e9c3a42b0ee7a1446efcd980abcd6c2334417c646"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cdc28687f47a3f52e6e12171568028f3bea07e3a3cae2e2cf7921980d1d10f2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bdc0ef3c67c14d41f6d3b24d6e36b309411eb09a979c9a25df743358610c2cf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"66a9b995ea0ec74e8b26433905e3c9e89477c094a67b488a22a7681eba116621"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":395}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7d92b09c29e8ed59fa4aab9f8aa407075581235c447d006b7e9062c9a52a670"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"c60750060d0be01f615622a794cfe345d5c69f22a8a4dd71672e8e00603c8b37"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":475}}}],"partialFingerprints":{"codehealthFindingId/v1":"b724e59275712051bde03df3c23273c49f1e3f1d9da04bbe985910409f40a80a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":512}}}],"partialFingerprints":{"codehealthFindingId/v1":"86431e536155e768b437abd66efc1186588bcf2bcf2c299bd499d4f4a200c4c3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"00db9a94597e4b9b718caa4fb4baeb2ae2c3240027cf653f65243beef584ba13"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":558}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e2a2efba815494764aea31e42c1731fea6ed1675f3d779ddbaf33f9af8a1712"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":572}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0dd2ee4b15a97a428ee12bd90f1ce00de282d1e5870a5ba74d568e88557d286"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":635}}}],"partialFingerprints":{"codehealthFindingId/v1":"02db265be990aa41dc0ba1aa3766d65bec36208d03bbc73b08523987363772e0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":712}}}],"partialFingerprints":{"codehealthFindingId/v1":"d75d6eb70de848b33fc44bf6aff76b34f3c0ed2caacc3cddf9c2bd8ce1e4b212"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":798}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c308694ed70f7b67b540616bfd8a8b5d3dd25b06a78b9aa77ff236ebf4c5b0e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":821}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfc8e585ea709df734c697ff7e3b40ce83d346fd915ac996d1b56ec37256200a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":837}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e7100f18315038db864d85696bae0f0900e72e3881af2a25b8b93cc52039f90"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":840}}}],"partialFingerprints":{"codehealthFindingId/v1":"0052b5ac30df010a8fa0386946fc1ea52892363e3bf35245daf6df62a50479da"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":855}}}],"partialFingerprints":{"codehealthFindingId/v1":"d167b8601889fc58e9ae44b5fe2128e4f0e2b13cb72fa455e237f14015327d64"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":858}}}],"partialFingerprints":{"codehealthFindingId/v1":"33ec4ca430c5b2627954c2568c3f33ffb5fc3f481e24e4f4a43c1672000b5533"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":873}}}],"partialFingerprints":{"codehealthFindingId/v1":"2348d0c640d68580b7e4d6c7341b617bb56c89232ae4babaa21206382347fd69"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":876}}}],"partialFingerprints":{"codehealthFindingId/v1":"38df39382cee81c17c6661d035496ba4d906bc89fd97f6792ef4af51783b36dd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":891}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e6d50589bff687e04b6d7a51b50a4dbac0b50ff58fd2b8e76aa56d8968b8c0a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":894}}}],"partialFingerprints":{"codehealthFindingId/v1":"1586d461d39e657128877cb43ee9de69fbe18750788902b348e5dadf1a242595"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":909}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a879576b8dbeac96050c2d845393d9136612431509192e1d864078efd3c278f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":912}}}],"partialFingerprints":{"codehealthFindingId/v1":"516260f0fe9b78b8f85464ef4fe5332fdd7a66b022a5b8efda7317dc0d40cb06"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":927}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dad92ff45e7a6265eded649816d6b6cce621e86014c2b6559f97bb2e1154399"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":930}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b7f55b2d694629d3992156235c63a18533ea96d2e5515c169d4e39383066c38"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":968}}}],"partialFingerprints":{"codehealthFindingId/v1":"68e64777b16210e2db9e1679a8d4ce5b6abf56dce08a9ed8c80f8c45ea8f0947"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":988}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb56cd4e1a067e12bc5e08e930abe06995d32d2642a5539d53be253988f2c0b4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":1015}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbe99efd0b06bbc228e139ca4519040663ff915b76b2cd78f97de7ca0cdb83b3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.KeyMatcher/Data/clsSettings.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"2db5aa435fc737a796617bcda6c7d9ab7a1f536ef8b74a9ff39367be5ed90bb3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.KeyMatcher/Data/clsSettings.cs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cf8e71273727e881025a2f56f754d4c90797c17e8b856dee01bf1328d9fad94"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"924f28b3be56e91a0c19894ea2af7062399fabab2a309423d63c7910f8e8f161"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e3732a5491f41e67c57548064d0ec3188d892681d386ac52dc7996159a15391"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"24fb0473d470e4dceed8bb27f25454918e9c740c81f801d704b8427284f0ae68"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"feb2e3ca4d11bdbf4fdcf028f07009f9dcd18383b97e39908af1b87fc2b3665d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsPara.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b5994deb94a0e051dc812bfd73dfe8804939cf1eff8db5791741d6c8fd1122d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"82b77ef3b4f276d8b7ed6e42a4e538c0a802de60f7b78308ea3b3e82e74aafc6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c1576b584d6409912f76245427cca632bc6c3c9b66115c985f32830bc301558"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"819a994e91b8a813854ffc45e7c35ee82b7c2fa7ea01319267b4e797566e432d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"935af3125277da5b8e26ed6df719681919e4253a1b0dc2470e671dca0fc2aa60"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8bad60185e48e83fd4905ea0cda3cf848c718aa003fafee56e2d39eaab8e3f6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"e73d9c4cc6837737af014171e0eeab514848428d5cd98446fb96dc15765f35ff"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"890014e03efc173585f1019f1631d6f0fd3a6ff8eff887c2be92675963b968fb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2c62e1a647d9c5046213a01d04b4665cd07303a0016f9326b92da715c6e5d54"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e34f50ab10ca38506dd43232301cadbbabdadd07653da25d7c250e86b98c686"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3827c101cab020342f64ba99df7232e009502c0530e3ff70a6a6718bf693f87"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"41c1c40892bfde4b5e70b6d7de46c20b00e59a3143719544972c7cf1b4c1fe5e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"eface2c5d90b9ae8da303d274b950643dd1dcd1dc4feca55ef789029881a7b99"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c767dd503e5582a307c584e255e5f750fa5a3ff0a7f2d686f42baaa35fbeaa9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"46f0b6dc0a5ca389f01ede3d7bd4d3a3aa311b1249a2b8eda02988ed125a6323"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba62129a05461a79b73b7453122b788fa01e0d0edaaf97836c0eb57974d85132"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"70ddd3db279945f4f50b2f14e37847f707307c786bf2539f22fecd5077427aa8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"45ee6652f0ce7b76efaf013589fbc0cd5c533f9e3f459c078c74dfa0905547a2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad2bb243000e70aa438d8b9b3dc8a7a47ec40ff657dc2d7ea5127a82c27ec193"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"b39eba1822b330689feec31a5a504c728dd215438571f9663d74381eba3ff2bd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc2ebc8331bf1e6433ba0c5f30875a674ae8542c17f44c63c05ec7aafea0fe14"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbdfa36b2be0148812c8f01ec2adec1b2cb2b5f75ea27938e0f4097160af08ec"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"302df78ed74c137d600ad427b42b69b749263f55492b6b6cf890be685fb14f92"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc0d3c9ca51d7cce47f4edf1a9d31d980e63df30a3b373a3a856a6f512cdd3e0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c0fee822a68a0e1195099de3ed0387139d868e6d4792a9e4292ea0908e2a52c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb"},"region":{"startLine":416}}}],"partialFingerprints":{"codehealthFindingId/v1":"8641c6191c4a2be739d447a7fb8eff5b303cf52e47617933ea752e083ab46dde"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSettings.vb"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"69d5be28148fba4018e939b3fdda663faec78d6e722e13833a98549fd02c55b6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSettings.vb"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c653be97be0d95ed13701f9fad7c4c0a90c473d782cdadd7445dc724a4fc383"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSettings.vb"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0f834012377e1acc70ab8103f6f70e96affe045692e3c9834390df5248fef2e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSettings.vb"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f4ca75c7f31822def60570f7dbcd2e9a9e0fed02a15c27705b0a643d431b687"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSettings.vb"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"b992991b167fea180ecc8e904e24b98d5dbe5c85a945af5cccdaf624b1c37cff"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"c85d7094e1c2f76ecf74feb21e99e3db651850db1bc2c97cbaf5d526a5c909cf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbe59bfe03ebf6e8aa9d8e544f0577129d36d14b80d6305bdbedb234444db040"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"38fd7f47ecfb7ee1bb7ea47eedb18eb64b51d26001024ea4427b0fe076ecf96e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6ad065e603e6bfa295e9e57e8174bf158fd45988b95c65d4904f1692a466beb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"7122ae0865d560072a6aac4b574e53c195f850c71e7fbfb51064f6f4f878b7d0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"cca877ea30baccac0cdc2fa1944cbba27fbe2688a3940a54db8afaf4b143bdc9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"772640d47127c5e535d15c18b07ee1a9b6aed4cab496ca18b136c450d880b925"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"af73f76dc3e92fd7b8de8e45322167225368ddaa9b806e1e541734d94e18431e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"16911af1f9ce2a46069abaeab8459d6ce44938a430120ebb099b147c813e5bba"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"f27562b8248ba01286f4b79adfeac38a21e90ca9c382d93c151428f89f261504"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"70c6609f959c9d261c5805425bdc5a456f065650eb054b8299912691b291a57a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bcfed0d1041f2098f6b0fc2d0e470c605df0a927931fedbe2a66235f3171008"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":440}}}],"partialFingerprints":{"codehealthFindingId/v1":"18d09c7554d24393bf82bee3ebbf71d9ff1e63bc07684ed8a81d2e8c9c2856df"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"444a614b44bbd2b324dbd8b525f2b345440ae1d933568178a597be0022fc4656"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":493}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e9e93078986e397d13c48e1aaf968069cd6ce3311f1b7d1a0fdfbc27e233ed6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d3d4a1a0bfb7d26ac9591a30ca02cd740cfdab5ad0a209fc3aa108ea07ae438"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsPara.vb"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee13dd258c72c184af75b2900572cd0d8ebcce55be7c34712e18da83dd3b1461"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsPara.vb"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f488034b630edd0e582aafa0532b18446284996ffb6135423b5396f23c471d9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b6c5ef59b9d7153362e8b717bea09c7e698dd761e18f1bae31c99bf24364b7a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3f91830c03319ad81a46e18912be8998d9f0371322eebb061ded88c918ec756"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"125657c4c4cb3669ec6f9b6c2e9371b638b838bc9c27dea4ec92d9aabc5eed96"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e1ca6210fc2ee34fce0e2f1e7de7504b981ced0f58c8193b973f067eebe7f6c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa93f2b04657e4bcf1f59bfe1fd8e2b287c96680024ffaf78868b2ffc36c4106"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba43805a994fc3905d3d7fcc71270975d717d282ed004ff2208bd6524b3e2905"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fbbdfa5f18828910afdf1365475176453f7e33b27e7046f08301cb1d4d86634"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"86180792940774b33d0ac3ccccee82c9729090f2e90fed6edb9b9cc116d16206"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c954c95a8b68bc3b0776b08a24172d2f63f79951aef19912176bb8e6eca0ccd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"478cd2543f6543a893d57efaa3dc44e6e98248493828860910754985f13fb8d2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"1514284f963ec8bb1e60e55d9a10243a1e0460ee1a3835d4cca220ec457138ff"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"77d16d3470ce847aaf4c2a922d36ddf55f7d8f9488b58be719b6ca0dd2301071"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":448}}}],"partialFingerprints":{"codehealthFindingId/v1":"3dedb1425e4acbb2e6156a7e99450ea92112fc131c940a0b3e724e88fe5eb12a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":456}}}],"partialFingerprints":{"codehealthFindingId/v1":"68accad72ca04f05b02928c0f13b2557861e06d6aecd913919eecaf1eab95f67"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":495}}}],"partialFingerprints":{"codehealthFindingId/v1":"c238bcccd8566921703c9b946a8dcad8d03d2be9fe214703cd34421971d9e6cd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5aad7828c3ad83492c156bb8e9b14466d64d265be0b048b10d84fbf2c760042"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":553}}}],"partialFingerprints":{"codehealthFindingId/v1":"86414dea04cef457a529d965b96550464ff241915635fcbece43519c374c03dc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":583}}}],"partialFingerprints":{"codehealthFindingId/v1":"7be48abeee512be11c9115893c6f717b926ba6644aaae22b921e5df297d66457"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":606}}}],"partialFingerprints":{"codehealthFindingId/v1":"05ce42cd39bd03e52c91fe5abe8be6aafba205499225e3ef806f291ac60fb2dc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"f91c3e6f48153f77b29900cc79252332905baf72f6fcbf00ae53c9b998dd1c73"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"094113c88fd0d5361a2eb57b86118d4d72ff2d59c420fc86b6d7704ed7abf817"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0509a825418a439be6a622864a69e8e3a7ceab1f6cac17a992c41e912337297"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"33f6672ee21c344a4e0264caef7c7e23221bab2a5721cd567996adf5ef2ff689"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"6558b9e583b0ce6e6bdf5952d8cbd51b1af31b5da906dc8ba13aacd81c99a68b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea4fbef821fc5b2314240d6133f78963a95d0d9c4f658167c8b88ac67479eb7d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fffac03a267c7eeb7fedcb75cb18c2f12381adf1a9be98cb0c788b50ea11c66"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6e819ccd299427d3ce2a269f422470508e485f480bf9b2c17a8fe2b990ef4da"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"b36dd29b1501537c238ccf10139c0e35ac489b8ee539db43569146641ad2a8c8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c6f9030b38a66131d2a1f77373948140add061db1bb68a1322e1d5df75d9dd0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":396}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1333cdc45d6b8e2b8659473151813ee44b105c68d4192e195ec85b73a3201b5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":431}}}],"partialFingerprints":{"codehealthFindingId/v1":"404bdebcfc48a13edba127bdd8de235fc45d40a2b36923992b675d6f4bfacf88"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":444}}}],"partialFingerprints":{"codehealthFindingId/v1":"6181ac3842c6ecd4044ccfaebb4fdb48d9ed604947dc545da6791f1223cb143e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":473}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b9c0ff9aef1a0f2fd400dd3a4b259136f4806eae78a4129adf70097f1a16db7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":512}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed4f12485c035f745c738ae0918eade75ffd768d6c8a596d13fe6f4ea8cdd2dd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":611}}}],"partialFingerprints":{"codehealthFindingId/v1":"7822447775fd4335639dc1c071fe8d1d16d445534fb8612c2fd3b23ddeaf9332"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":619}}}],"partialFingerprints":{"codehealthFindingId/v1":"6290f85cafcb0c4ce0948fc649f32c74e789c02828931777236a5d515f82ad72"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsBuiltInParameterGroup.vb"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"884796639fbf894c4ea80a65bb985bbd1aaaed30a46148a58ffa2b23d909af79"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSettings.vb"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"d41e4f2f9b26a36fc29edba228e665eb2096561c932ff9dbaaa28ae170827a26"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSettings.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"2aca4c9ca3054911f2a6b1e13b546b0b28ef2bff2354493ed179d0ea42f3b8b1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSettings.vb"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7968a2607cb71fe248f52e09ec9afee5e087fcced41274374df037d37818707"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c11fe6c574bf37ff467b983578d78ac9c30372aa7d7f6cbec735ce1d779991b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fb62a1369d4232333404bdd3e9b68105c482aa9b27abd05268009e8f6bb2152"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"a25847c1a977436cb3ba9ca160fedd36be4b159945cec35cc910943c315f3fa5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"10d6ac0909682507a39a8a3c288722d2bbdf9096afc6dc9d466d553c7b427000"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dea7dcb3efa27423b45343f1a358b40d97177ba7f3f3d2f79519e36e4ab710a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"9dd72c802b27c4554962d605ebb7c834ab6269da27a990b66d4781991c97dd81"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"f495efdba8454a4cc207a2afc94f583f8dd4c0f251832183d592b6c80c1ce5bc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"8193aaec639e23b5562dae9fd294e884c20ca79a2c3534823a3945f03cb6a207"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"c93b6f27430bb688358032008a3135dcd538ad6adf1ad36a9a087c49e7467294"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"387073bd32ec7a1a5d1c3ec0aa2fa87359bfd20346be597d1ad3f00b3d3d4731"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"a854aab97d1342e0c7a21532b24eedc17ba7ddf7853043424cb2fecfc55c56d8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"01b5365ba9566b0f001273723292412009abf748ab5ce4feece353f2199702d1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Progress.vb"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"773d315efb1c9303dbf25468d020a4bb96340f3a8aca1516f1c0c52a451b39f8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"be70db4f893a53b0d693580e8413ac6f3d22bf346568a100f13a9c2bcd60fb43"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"6279c41a675e3f8f06186e13e97e4a5a58141e3b78fe188996ff95079b87b1fa"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfdbaed0fbb58abedde7bf6ba0160b15a32e3495343417c8547cd0cc4968d0a4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"c850787a0a59114d8df7e1d7bb309ff45010bd29d8c693cc26c02a05c20a6047"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e0d4d5ce4123db7e6c3478a9e22fa954d588695f74c01b262f4bd4beeb9b60d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"04f45b91f29e62a6d0533ba1d7736f5a1a0b5c31abf4691611bedc792b530470"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"f81f156e7bb9805244be2098209e5d7b943109f8a483b33b0590093dc16591b1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"402f6cd87efef41139d2d8290c00a09759058b771f36ac85777116264408e757"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"4949792f606031fa3f8f98c561a369e45713fc5ee0cb6eedf21ea2aac8b3fa3e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d57253f4afd58a3e473785f2b2c24639830a0a439abb05d871a0fd4cd730a07"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"95f83e7d84b5ac8a56827b428fa27611b2e2ac2e7e7e5d773f11c1a9ab101293"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"9edc44ddb5b26ce9c602356e2b856245e21f776caeb083403e5a256c20bf2dfb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"d26e8341d862fab7f07c05d054ce1b9c424fb99b19d193efa63cd6fb9a46f484"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsView.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"33473a45cfb53ce6a94f93d5f59a67079d0db9162d0712e0a327c3f187266e7e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac159f4fc3b396007367990c9080e281d396d924284b9cf7a8c8f9569b173fed"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"65283440f7ab5088f0032ec91ecdef9806801134f2ce529d0703368c985d7c52"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa135a49800376c28e6057249b3e2ce07c10283bca307ca6a5d1768a48788a8d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"b136fe9ae35f044f9239a192688b37a27442c86edb6ebbb6c1efde3a3a59aee0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":333}}}],"partialFingerprints":{"codehealthFindingId/v1":"e22a7e1774779d3d6d09e5cf4d8cfc8786e55925507cca6dfa5fb423399c524a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"727f2990726f54cc2adcee722965cfb14ab779854229a1079bda07bd6ddca56a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"2976f2e452fdaaf8c0d015b5b2987a9fe22ee646a4c05d52b1a5ba99d054af54"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":420}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4ac1539e80f32b8acfccdbf1e9a1c46cae5d7820bbafdf4c8dbbeba2d5e2ae2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":427}}}],"partialFingerprints":{"codehealthFindingId/v1":"c69da30a2bd04684d7b0edef6203d7f3aec69d357293ae629222e275f6cbb0a2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":434}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5aa47005f042326acc818b8c2eb0affe80b88ce1ddd7617773479ecd202888a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2d2abdcf0eada55c242811dea53ba3e53a815c9e7ff0b317e60727926ca8678"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":497}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6a88b825659ef60f85a7bb90ddaf5da37a315705c3a05fe23aaa23dc2785230"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":523}}}],"partialFingerprints":{"codehealthFindingId/v1":"68cfc1d3125bc10ef7baf3d7cee8ddb349ad6c9867e6e223bfde4d985f91b53a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5b08cca3482998f2f8dac0b329ff29ae5554d3bcee57d8aaf0ae71431718494"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":628}}}],"partialFingerprints":{"codehealthFindingId/v1":"281db252b2460c9e6d53e50da1b1cf3a88c15f10ec05b7409ff7e2b2d5fbb7c7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":684}}}],"partialFingerprints":{"codehealthFindingId/v1":"3504f0a8334a7a183c150bbe267ef29c97fb12ca4a7e202dfa2ca69750d5d88a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":699}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0ed2080ae6f0df847f171a2a76fc404854e327f80218d476d7a900dbe83c824"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":714}}}],"partialFingerprints":{"codehealthFindingId/v1":"0940d6bdff07726d1e9c53b7ae80d814cbf72340f927600f3b6e1228e11f4f56"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":729}}}],"partialFingerprints":{"codehealthFindingId/v1":"1da41ab7992e1521eecf00e863168bac3bd90c5aaef1f0d8b72b1fc1b83d3965"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":737}}}],"partialFingerprints":{"codehealthFindingId/v1":"a068d81b0cc3871f69e4fde973aa11d5e3fec27f39e405f372d4c0cc708c8c54"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":744}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0e5faee6e04daf5d101b8c6a6fdda6db8a8febf4fe9a9ec77aa97295eda549d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":751}}}],"partialFingerprints":{"codehealthFindingId/v1":"9aae97262bee500839b38966f92dff37da71fe2c2b531a1d972de1099a73c271"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":758}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb4041fdba17021b895bd7ef980f20eb5957e6bf9abe21f2b514bd894cf74b4b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":765}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7bfd3326d7f6c41c30a20db383b27476107792428fcf358b41947b2d5046291"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":772}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c23f97859c36c66fe8ae79e2c288d5d1dd237e7d8b888a8039849b21a573104"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":779}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4614b724017db13b29741edbb940e1e1d96d59a386d4a5e9e78e46572159a2f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":783}}}],"partialFingerprints":{"codehealthFindingId/v1":"23dcfc6d65ebb4c0445240dce5ec20ca7d9cc39f27d3f36e0de437d1a871982e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"53fa3e8c3ed5382c9232e48516c26599331736d468da397ff45f2246f0841b89"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9772e5519385b77fb8d5d820bd0bbe83d772defce6389f5f288403aae67cba0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"d13c1f75c5f199b934d245ee0adc7844a98998f96bdc16c78b38047f0784ae80"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"5231cda1051c965fdbc70c8e7b6658ca538a4478b5f097182cf986d6ac64d4ed"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"de75eafa0e501092b5448c46175d5189a26f3f5a1839de086364ab07a9a90931"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b80856aa87397be4d56a2ab924a2e32e8e5fddd45433061cb13ec3d00694f73"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":423}}}],"partialFingerprints":{"codehealthFindingId/v1":"02f269827f5c2c1df9c16b361444e7c8e2df5bb2f3b59c206599d5d4e7e3b260"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":448}}}],"partialFingerprints":{"codehealthFindingId/v1":"1da83b78ff600fc43ef7c108850873131d2c6f52a4c466e3824829560aadbfa3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":494}}}],"partialFingerprints":{"codehealthFindingId/v1":"0db4eb4f5ba35af3151b8e8a6746c86afba58eac2fe8a612479b6d6aa10e1b39"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":536}}}],"partialFingerprints":{"codehealthFindingId/v1":"788c12be8178a7e2121ceb50353acc05d845b7eceb578115f73dc1112d5a0fc8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsFam.vb"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8a4e01842900a93112d749c46c7ea6f5c47f7aa040190144febc70b0753b28d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsFam.vb"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"6679e6e8e14c653579a6d749beb9d2e7f04553a41bba6a92c23146e985ffe5a9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"4af9b93934806f8e48308e28837af116e2335185923c4af1c8d6b7df57cbb3f9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b5730f593d1554556fa9a4c9cd6b8804bd2d8135136e09ca375c7c5805399aa"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b4359c6b09d1c5864bf0ed5177254b6431dc21baf418470dce7429ffb5486da"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"63f8e694b99ba4d3616f62cc2308f70eca508316f78cdbdb6d5a227fdb5952dc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dc18c43ee4c9612a18ac51986ce9da6f92da638049d411999521da40e717a65"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"5eec3e685ddc4647294e07a47544508cd7cc0c0f52a4833ecfcfc4edf3333c44"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6101505c6cc9d5bdb19a35b3822cc46fe242e21a079e43f3090d8f654ed713a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":419}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c3379bfb96b54e6a3c843d0f3836250a417b46f19ac872d64ec38e0789a88fc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"f90f29ad08f8bb87aceb42129137116b5e2119d4873ac627169b945bba966c5f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":476}}}],"partialFingerprints":{"codehealthFindingId/v1":"4df3330ccbccd25a37b9f9567dc1447dd626763998855c066d0f07e9972b20fd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":487}}}],"partialFingerprints":{"codehealthFindingId/v1":"abcec4fc796f15d04beff3e2f3b1eaadbe790e806e297824b095b25edb460157"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":499}}}],"partialFingerprints":{"codehealthFindingId/v1":"afdcb9bb2073a3ecf309460d433e4f76aebb26b427feb0c4f2d9cbf0d898dd96"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"9872311ed34217bc33222167221d37363f33741e2d552bc7e0239f0011a9e945"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9ad344f540493ca68ced1334710a095e49e54422f000614e953be14db7d5a93"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":587}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f85064d386b9e228cf79cfcb01ab73db36f70a04c6b5c1689ddc2f46876e020"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":629}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a5c2b3680260b5c3c46e92a76f79907335300bc22b5362f5f46423416d91d13"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParam.vb"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e5cd2d58319629c41f8aec24fa781fcbd0ac484f42cd306405ae07891ebd7e6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccee0cbbe8f12e1ffb1bd5d9144872c9ca529fe53457bf7655d7b73f26713d30"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"01a54b8c17eda7b968c740244e457117a752ec3c8b0e2c64b288bae72b164324"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"090c7de57db44b86c666bbe056f47c2518fd4ef9d262004e7303fc147c9aeb65"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f54ea92f938f85ac728111656acfaf95458487e35093d3b4b943814479a1281"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"91abd56220553ccb5e4ef4fe514f29464349a66ceac0fdd2bc2fe0546d7ef965"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8f851ab324e275d4255afa188c3085b91474e1de8ff31a18d7038f0f06df8dc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7168ee8666891eebd6daf0d011e2e45209cba9cbf8917e81dce1839d1be4306"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc1fc609f9c9a25e2337bb80565125093ff477fc4ae1beae41448407961ead37"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8eab7adc5b2b14ef8d618e2ba56e62509003425826b42946d0f09065bfc6784"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"84b70b9e8697c4361f4eb2f0ce383c96558376cd06a294397dce555ea9570168"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cfab8c5074b5bedb9d8a5f6ba02e97e04d7028b07d6e6df3905e6b5e16a5a6d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"5acf9dbc363a9c2750d2a595f97ab27e66d976b4a511445ebd2fd196b160ab69"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"baa5c95d5ef8d1783cc5bf1e96b4b697ea98c8ec9241ca4e87e3b67e69df1b47"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4f4a923bc75aabdd987c73f01469823400e776b22880cf318f6c6a93fa258e9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"7eced2e0985559310c2f5bd66fce93f6db5695a7ccb00340cadb94c819731736"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"f15168534710a3dfb72b2c3ceaa6c6785d9323509fbc51526f8aa145725d25a4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0a0a3495bb0e78e7b3277774be922663c1f687a20179aae16709e8c87269b43"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"7406b1856e04eaa5a4ade5ac0b069b9fc0ab707c72d8d417d004ec7e19216a6e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"4eaa288cdf64a6d89dfdd364c897a2a838cf7b8054a427e0ebd27f161888f4f0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"1195f5ed9671982abb1da85513a5437fa3702357b9a09143530f57e67920bdfd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"3dc07d88ef495c928bc69b26452cd460c0b10c13e9860c0953f6f2466f714d65"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cf41f3154a1b3f775ee72ba92964803735ec66da809edc5889338d6bbe1325d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c7dda50199704f956684d07a492dc9148b98b1518a1ef76e12ba40da3c840e3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"223ae6262fed4015c62f48cdcbfd19f20bfb05c05dad4eb2325bd47a16105209"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a0ccef0dd6a07dea20dcdd5f34a2c10cfacd7f574a13f7fb193af961afb4119"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"b590fd3ed571d59f36911ae3ccba6afc978fdac5678862b439c437bf7efa9599"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"038b399b5d5bf261ffc303cc2354c2fb13d27b0f497cb49d3f4ca11d792f54fa"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4b0efbbb58864ac4d9da212c8dabddbf8ac7d6c34fa05e4858d358563d88f8b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"aca2b9fa24ad778c79bab4ebfef4ec4bb801827f958922497bc2c61b56bf9ff3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"6629ace7f31bad104cb46090e2ca4ac99609c42c0e75f48f29f058249666c504"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"342b37a272d77b24c2e65cec95b9873b2bfa652bf4a2983e78aebd77f44ff84b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"0eac9f74b82ff2428b974001912732241c2088acc34204fe88307ac65263ecb2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"47f107203fd7e3260eb1d8007d269b7a70c863f2f8589ca3ec0731817b89dd19"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c300a4306fa06fc20e16e63dd3a2d3ed545b214741f3e699df068ea8668dc6b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5f15386e26859065ae973ccb861b03a0d8a013b4470d1b37abbff5ddaf2783e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a17f574ee64fb58724b83b53cedba0a6d2fc89747aebce5e37be2b0b8d6b31d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"df4899dc8209a3e1f8c53972876d0f167d5e1a240f6750494b8fa7a153018c27"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"52970f92aa38bec327a608d23e7068a8675dfdbe80335705472774aebc2d7983"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cdceff9a065a1ea2c0b47051413c4573650c630e399c54fb98e8dc7459d90f0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a7101d3f3f4811586baa869ba212df75e8f2da29000c048d0ffbe27c8dfa2e6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f23b8ddcca4d748865231051734ccd4660292c3ffed4c5944de74698a7adb74"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"9177b94e72df06e02837c8374102253f85483284b3af677878dc036e2a292005"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"631d5ddeb7f5c4089bccae7b3f2701dc4840347d822a4bb25b74db97e0fe7dee"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"562339061d6ccb6d41fa0867229b3f809dffc58f0f2bf44ecaa4ca2b6794126f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2514.vb"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a17bc4d726d41c0eaa055645ac18db85c78643759ed6a883e8169fd758fa1f5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2514.vb"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"8315bc5694355dbd1a95e6ab21b3d632c3b86d45c8761f3970054ec7ec2cf35b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_AddFamily.vb"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"684f2495a853ba0f97a552c7b6883e65fb1c06405a424a5a4d837bee29acec50"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_AddFamily.vb"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"528465d386a7ba90dc54dcf6d3a0b3bb4338cf2bb4886502218d79dbb076996b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"822a043299a8039b476bb548adce7e4041ff1ec1009ba06af764ab91d37ceb65"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d782db2d49c4935bbe36ceb43f6b7b59a9e8b06d6c4eda9c08813b7a9d81dd0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d7bd869431a02dbbdc9cf785a42494d77dbde80f8300510a8efd722bb8541cc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a752d0e9763be27b86c7b1be83f489e68bf346dfa4aab3068d47e361ac5d4bb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa0e718a87ba0c16ec83a1f2c6b5f6369299c4f2dbf3633bec2a4b0a3a017fb3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"df2af9e3948582999bf45bc8b997ce66f6931d9a4f102c137e05043e604c4b6f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b8a0cb468614d6dd853589428983d6bcc2027d0133c172cb84148d7d3f0db2d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"49c182bae3a8f947ce0ae6f56d70b0470f369db1c9c4c15195eeb0173fe25527"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3eeed43a9e246e98a42614bd776d722ca039245a97cb6e48de8b08896a2a957"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"27199160bc5ff31fd06911ceab532a930844fde847bf91fe8ddd0483e469e06d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"5db5c1edad9b0bc4f03a78bb1feb0f4e9e7a2c09e61893c4dda7f087013ab951"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3f00128a97a61bae3f84ed4b03860f9181e641d65d68501254e405678e4750f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":613}}}],"partialFingerprints":{"codehealthFindingId/v1":"4acad30bb64fe6c6665e105afd90b7170cbe100217f5ec8fe6eb20ea255c52ed"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":674}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c397a2f0430a8df9ae8541d7192fc89d86adc9b8eb392a01c099a435464abcd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":690}}}],"partialFingerprints":{"codehealthFindingId/v1":"042619f67a3ee64c60f590370b1679506f8b11000236e5c80d1420736938280d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":709}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fcac11f93e3d3b161379339dbe5a486a5ffa593cd10192cfb98eaa6d6636a02"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":721}}}],"partialFingerprints":{"codehealthFindingId/v1":"43697e6a39f7e1ee9eba852b163b85b5e542f133f8adb7528d1d6bf61e938a4f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":733}}}],"partialFingerprints":{"codehealthFindingId/v1":"1765ef91de0a11eab0c2d13add0db2d2286db4142ff1710e68b8d36463f802d4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7f4d0fd25b37ca868332da2ff6af1fedeedb3ef0cd2d57aaf4e7a29f20107ee"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f900d3cb5f6d952469f7ad2bfa6f206bfb5df0d4143866109bf9ed181e4e008"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a45ad84f9146282e368132aed67e32cdaf8b63a367c063c7b546000f3da01f8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2ec3ad2ce338abe5599feb84b4873c206320e2be38e33ba884f59a13e1b34ce"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"f67ff020273c72f0bcc1a8d72acb19b61907b39f3e42899a6d2770acd49727aa"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"991caee5e39cba0623a5f8fe02a6d510597ce53e912cc0e6a5116d418c1e1daa"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"e860d669bd9a090f952803d49f884b5eaaafd4543a1692f6b9e2728a7c718980"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"53ae60f0c0ece6c4e4e1a205bb86a8c6758610a6701de9f03b3334ac8993bcde"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"49f388ccb312889f4b72ea2020085f9a42b778770dc91ff82c02e299ebc752d0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e1ccc76554c3908d28651bfaf2e0417edeb85066a8749a363446b21b179185b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"130980c18c60df5b0040c9a5e9855b1909ddd7d2e5e8b04da6ecaf5f4eb8b438"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":354}}}],"partialFingerprints":{"codehealthFindingId/v1":"27d23faa093cf58134656ed473b39d823dfba437de904991ab7e5b66282c958b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c4c3632ff196cc524297297679851c4cd9b12da61f84fab6df4c29a1216460d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":380}}}],"partialFingerprints":{"codehealthFindingId/v1":"7212c1a477eff77baa033ba20aaad3c4847d9474dc3fe73fc566d634cad3ab61"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":402}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d5cdb94c9c3f893cf4e7ae3258d90dd0fb05888533d65591eef0deaacd8151c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":430}}}],"partialFingerprints":{"codehealthFindingId/v1":"a332dfddc8fe02868e8ef393dce80c6ca84a7fcad5dd269119f9dc9cee18717f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":438}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecaff1287fc828aba2e3f5798e7ac89e56085c514463e09b595108de491fa3ca"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":458}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd9e6d2a17a195ad483dacbca8e39cf66cd52c09207707c8abd49e188d5c5d57"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":464}}}],"partialFingerprints":{"codehealthFindingId/v1":"3166f40ec561a6ebfdfd65dbc16ba81dceab825103773b97928cc10b61f1dcd2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"26e37b651f1e45a1fbb464857aa0a7d921fd9c0a2b9e7c2b510dc8ba69d3418b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"549aadb224b8b2ae233cfd7efa2e6a6a1b262a3069d46fde36bbadabfa13b443"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"c68592f4d798db992c9e20c4c197420afc5341aed8d0c8da924166e7668b1d89"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"d806e9e14abf9b29fb890fd417c26a78da6e5c4d15d65bca6f51d0ce4f752aee"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"f31e05b24c7d147d3ceae87f20ce792a60930609bcc6c604a392703c388e9bcf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Progress.vb"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f41fb16392089519dfed281c236ad8c94cfd1e18edc416809be263c4e1536b0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"273c6d55bd37fb2e55389961c21e2bbf418990a7194ff574191908d1d20431c5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"d467efbb02be09fdfcb8702a197c784f202de30519dd794ae9f313f1f17a3f64"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"90b4007a8fed8e0297f581114d8346f86f9592f5abd84f666bc8f5f48f51b4d1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSettings.vb"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"d62a61eedd9d5d53d7803a2589b98da8c5bf18ac6c4ba31240830df22dca2dec"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSettings.vb"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"5adc6530326380874f1b3f5373f251c5e9cd755cef9703d34dab7245475b924a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSettings.vb"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e6c5a498f8ad234e3d58cdd17e279f864312a0c5839fc238bdeb1d0aefcf92c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViewTemplates.vb"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"14337fda2c1a656e531efbabadebf321ef19c85483288a44ee91517d2cf2ff15"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViewTemplates.vb"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"e013a9a5ceb34fab5fe3d6dfe4d3efcf53e76e2c6cdd6ada4d33de82b5b49350"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViewTemplates.vb"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dc116f5727ac5a0cd2af940b45c917f90167ec3be5d893a5acc08014681354c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"215d7784686c8634222313d20855d77f4d60f75774b0606b6b278a3bcf8f102f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e88e7eadf315476e468b72b56a44552706eaca1252e1b26913ce00f96f4cd18"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b9fd0a0a40ed861ac931c41b644f32f265159d034f526548a3a4894fa343550"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8d02cd60d4df00e87caafcd2f0c6fe739a28271dac90df16a7c1f7fb00347b1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"69dd11b57561f67b045c56fb7c2d0447089f1f2ed3eb07096db8d9affabd633c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b4b29618f266e03ad159213cd5b671ce5a41adb01a81439babd4e0d3069caeb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"030763e7c250f5de15696a4c8d6623f70359f9d15a199fb3e4ea33e54c3db858"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"e02bc55de601ab17e87b12d2e3926ee05d8cd6505e3139ba4217d9662c6b9c9e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"dee809babf035481884d2ff218117909e99d54a73c47b68f737f724bc3f2099f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"b282e3be92fbcc58dafd84fedf359c5506ba37c0782e40ffdaf30fd9378f5e73"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"af6c8bd08ad89214cef4fe47f74f71e353198c49226b7985776181f52bc830ce"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c03af6e040e5e0503b73b3d1118257fa1ed0c31bbb4b9c2cf9d84586619b7c5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"d44c82ba02f217e6076446303d631b2e3e532ef3e388c6b022cda5243e49ab92"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"c66b03fb7cb8e73f14e10ed60abd0444ff82c91850979e46e447b7ccbc41499f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"11cecef842f86b6c38809f2b3cb875b282065df8ccb7e3b97b652fe164a0960d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c775c274ac6af18a42dc5434665a4c0ba918bf62ed6dd174fac5215a2895007"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":691}}}],"partialFingerprints":{"codehealthFindingId/v1":"b00e9c4e29592e5eb5ed2ce40c749e220843b4c286976f8169309a91d0b8c083"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f8a485a685a37c12ab18da676e92b88cfac4e1c88bb5988ef4cfff3687a17de"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"9aee353303e80b26b1801528cc209562fe6e471302c0616ce91fb18cd535d012"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"8caed8025a696cd2d928b3745ad15c3ce7481dfa4d3c1cf0991cb4df648162f0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c5dbe4378f498a3d3a4f9971cb59f6ca46b381374b523bd8a8f1f54dc94f74a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e320d43190eaccebac42af5786610b646b0d49b3ecf924cac500ad4f1983e68"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bb90ecc4f0f4e288affde54b739c13097f67eb35c99d74206cf8b5dc9cf7931"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ca44555b9fa96a5e1dd1d8529b584c97441866671e6a9bfc619522e1e25f9a9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"de49fdb6533e826630ac4dbb4a86eb8392cb01398070513013060b6d70977a3f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab20601a06e6c061cbf5bf0556199ea22e08068f14f95f93d0f7902593aef8d9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemType.vb"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"a586df7f8d5c0cdd9af27ccf556da5e1a46f5806cd451009f4147aaa6277bf74"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemType.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"954f9a35a505541fa02c86982263221baad2ad0291a7fd210b53ee31a3a073f7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemType.vb"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"d916f31430367561f3b9f731a1b543699cfa3c46354d55e55f843231e03ea1ee"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemType.vb"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"e14933f6c4d0a9959073c3d00dd4edc5123c9177e380aac9ea63b6eb974f1fb6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemType.vb"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ef57521fbf5eb380f46d4a7055850b0ea6ad679f2b04f85a8183fd74ff2131d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtWorksets.vb"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"54058941c4b8a494102126cc82c08ee00c1d1adbc458979984e9ce3f39362e7b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"c34f6e200890b236511d8ffcf500e51a2346493cef57305b3264bd801fd74177"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"960561169b63def938eb5a81fc28374479761697f5c3415c9f8bab2d191fd107"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"5974e5f4b2895b8805313178123d060dc519eefbdce7c4db9780393f186cab98"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"734fa293d819edb5ede7ee7d9d5183e24fb0ede050d797e49d3c1c23f2f7d548"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6c16c0242d1dd302ba992f721263b68feeb672ff3daeb2d82e31a0531f62371"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"e94443e4888efb89f6c03183920f684e6a3ee192de295ecac4ee0bcf8963c3a0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca5d5907c452a88115ca484c1d8d22282cb1d29597d2f95d3058ae3917635505"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"1985672bf2bf4f24a34393b77bff2b860a2e3d82b61f08be2e78b2d01d05412e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"c749ffd2ecb298f8d4ff98c1692ed7d052c108b0143f0173d108ee367182d01a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2f2f1b27ae6cfb1e3930d476875a78bfad2c81d6bc3153327960ee93b705abf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"47b1ceeb5fc13e5a58eee3e9c36de78d90e6fbb7432a220e1853204411ed97d3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"9caa6b43e7ac0ecff776f4e2ff72652e79e882c5be0ee456d1bc6b34735512f2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"60ff8d6e3c0bc6e7336ef1bd85d0f06307b6701e97127080ca183ad98a3b5b6c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c90a11602c56fc94e9fdf56fe911fa42536217d82bd94efa938f971a8699275"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"d79f9bfce422aa8431e5ff3b496d622a9ff9322fae5a3611a6cd928684dbfe64"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"80b300b26ed068d2f1a5ac2a791568f0ba59dc8dd33cac42750c240f8b870c34"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ad4b348bc62e643dfecef8845984b7ed200add221db69e3dcca37b5829f71cf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"83552eb89a5c2e248de913b7e32d2ddbe66d473fb8681903d282a2a3b6901f30"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"25ba9d1a8bb19a03d22fc94a0c7526cca5c9f74429b3fdc469522d1e8a0311cf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"4063eb286bfecceef3fefa4e8dcf701a5e73d24b848e694c6a973466e8e11e7c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"630d1ee8022897eaf5465c59aa2488d76bcb832814d67639aced16b5c1f9d1ab"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"185de31bf3441e589245b27767095ceabc4694bda3767f9682085bcc5f359fd6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"c932f76206151fab51ff2b7ea2a3605e727d8672aeff424b3591f970a33a2000"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"87de7e722e947e8bf2c541fe437cb4a12a93a6056f5bd0cdb682d967c03e9978"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"7edd51434fb9dfee80842e49a544a748927b5f74ab1071d58cee8599de93a799"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"b494832140e6215a81830ef9faef08c25c0bb20bd7825f479068e8cbe4744465"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"a41ce9704685e569ce0427eac761f96b11d459df0e433e47615c4cd5f6bb5349"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":376}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a6804ae58cd262e94cfc54bc9c77824ac05905c6eb04a4a091f0b0d1608ad9a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"e089b48f6e1422c86e4b4c967557ca4f2109e63c6d1123d3f26cc719a5523da9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":416}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a32594d0d5372d89434519d773e2ccf71173d929a458e059e0c4be744b00b99"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":440}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc7d078a2844b71d612febfdb2a711b83baf2dd8416ca4345a298e3efbb793c5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":480}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc40dad78f58a108a482ea67c2b3926bcb37f32f84cd5d8b8823b9ddc65481c6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":485}}}],"partialFingerprints":{"codehealthFindingId/v1":"599eb8ef149653c084f578a5565dc3965b8272ea499c7f259f722374279f6064"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":509}}}],"partialFingerprints":{"codehealthFindingId/v1":"33f39540344857704193d0a2a2e20aeae5e30ff655833576abacaee51495cf03"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"90597dc867c07e1259ad4d148903cdd810788489fd7061c8c8398896cb14122b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"221b9306ab569fe769de823b6d0323fc32a3a198fd21a8c2ee89ecff5d6d5aee"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":597}}}],"partialFingerprints":{"codehealthFindingId/v1":"0183a009ae74c4bb3da06f2d94fcc8ac093942a499793ed2540fd94433d2f96c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":623}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ae399b6f7c64db60e1720695b3f2ad227120ba8cf8573b23fe489b4c82ff0e2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":684}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad16becabf16877a972992b919e0d0f7e758b3ed6c734b75f69c1753d86deb37"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Progress.vb"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"6369d04b538d01509214bfa79268ea567672d7091cdb04688201596dddcbc55d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"05000a5704424c8a3ba769cb35d91e855d7c2ef58709fe7266c8b689803596ed"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac364db2f35ea4ac69760fefbc00bc9eb3d60dbf38040158f34e91f2c791aced"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3d65b4cf744fc39aae0a63e5cb68cf6a6d0e9058d3f2b95e04cdf1b9ad9ecec"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"3920b96f0685500229c83e4419f1f8c8c15ac1d98d1b43c0b129f81b3e9152f7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"82454ce5b05c7da0af65091cd2f85cd363f4eb526e5617ecd2c004e604c252dc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"01e9182b1660227d51559df85f0807c360a686191586956efd0e734638555030"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdec9baff9a4e1c85e2b87d0ab2796c92c5b0d2aa773a27224e202ac685b156f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"33456a6fa3054cb8a25366e9ee11f83b0c6d7142708a57852c719c7a740ae16b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"b30078029f26e324284b93352d6e97c9adcd7301ce3562dd2210f995c70c0ec0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a31effa1c7ccbf7accfad10182b8b3980c8512df5256448c0d82daa334de4db"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"1860c0beb7687905f7cc87e4903231020517f2502fd9359a13f204c0c8ba84a6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"37dcefcd8e445b1015aff15802cf420117deaf4a6db09483912289096b78b5dc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b968e403f599dddcc109efeb8447d6bb620c65e22268df554556898097c7978"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"a33211e65fcbf863af4eabc24974e177ac0328f82f4ffab8f747adf2b3e3b9bb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"1843e9894b5d8442f37918c1a50b1b90c7d3a83ae7bc2bd86b15ba2f2bf4f1ba"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":367}}}],"partialFingerprints":{"codehealthFindingId/v1":"417555a94bb4c2055170f523cae06c70945c4d4a275ab9da1636b198029893d9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"be2eb4b1825378b71ee01fcbefba598597fabc6d4314b2e7a66ad83a18679979"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":400}}}],"partialFingerprints":{"codehealthFindingId/v1":"c95edd80f779692da176b7b0aea1e9a42073cc9545118a81e91aa84a63de6f37"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFamily.vb"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4d491006592f5e0eda4441d3a71cad606813fb48ed822a2f4e30b4c8916b6cc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFamily.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"4093ab13454c679b856767623b9805275ab615ad1ff37c34cd9032c1af6eaffd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"194be795a5819516e47614f3b7f4c4d50050fc9860fe041fc1ea6400ec215794"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf1b7696dfb19af2d428d4d9e590a1ee81cba9f4bb83ef5d65f534648ca5b8ea"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd0a8b71ce627bc3ec3eb11dcde8e1f45693894b9e61621fa8e830e51103e478"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"0363efef850b9020456aa55bc970ef943ecad7d7601a671cfa74ca9d035a31f0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"9361ff99746bb443214ae6f82f051f1704a24a1d65e24dc69bfcc841bb8560a5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e9dd1db4ba88c2ccbe9fa7f54d71a7799b10f05326cca978b0a4d7b1fe47b3b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8ad585987059696f71a0ad3659d2f12912669d1ab87a037383769c5b3a61932"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"23293edb9559666e7b724dd864839d4286d868a7972a6f5efa94b338ed229f8e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"133ce16113313013f5ab01d4df1e30114a9105e739f7d06abfbbab6dce95834b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d8fca7191c2d82ad730205cdafdf88d80730a248231d73048e182f9e382e05a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"34c500b4e5d3771a91a25f106cb15b371fc5011f37f7e59151f738f9c8f5f66c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ed4acf4d48e2eddca06f788c3d905d3e4ccfa3c0c083fb5c6540f2266b3fba4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1c15e78cc941b201ae97871fbd43ff000983af8e6c764b14b765be73d22fb42"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbf31f3efafc4a0511ba3c210a179b1abb45a4ab78e0f636a94957f5af54a055"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac48ca3043caaf35bfc56384f75a088e7a95c0b159df72d1282be555568ba699"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"dec18548fb19ddc4c7b5b1782267f0c290bb57e62c546eb5a88cb1800f04f2ff"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ddd8b897310a78723eac8bd9f15a9c9533d142c978b274e1b6b62029d82d8ce"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fa0f747fbd84dd65d7eb68c2b943d15c46f88aacc1ca5386327d492e8ebd20f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"0af5b9021cdbdeb6f36301f319631e67df4d874a083c75d5ab896683bd165f36"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c0d20505d8f8bf360f7dba300b8a555a36a964b85c2a0647fac9905ac316557"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"afe56a60b637bb0ac9078428fad936a7e19cf6308cbfafad00fddad3bcf0f047"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"f750f4cf5233506191c27b95e4706f51df33841e915fc3825e12959f3fd17f20"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9aa6cb5666362586d81d4a6cee4066b0902b3466ff90618b1a01aa877832c8c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ac341e078e2131c6ae88fce509c62df5f1c12948c72774ec7ba5d7ea8f71ab2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"878210c3b11bb909f4a0b0244cec4049c1bec71491d7368989cfc37d0c3f6f2e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":338}}}],"partialFingerprints":{"codehealthFindingId/v1":"114aac13a34349ffdb942bdd51f01122877bcadc10f79f31e192d991a08a23fb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"3788591180960137d4d6ff26e071c505e9f2df1659ab51d3f76a1794ba33474a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"44a82ccbedd237eb95ba271fd285c4df528f1cbb38c0f9773b365d33ede67bc4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":373}}}],"partialFingerprints":{"codehealthFindingId/v1":"f753135fd89f52f409fe7f16561d2869ed246ce475cc06d2e4e1ff80e0fcba84"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":396}}}],"partialFingerprints":{"codehealthFindingId/v1":"53bd7767d7ca941b000e91f016588082cd716dc48c432a040690f1f86f1bfae4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsView.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7e63c577ea83b93c66153f4af192dfb9ca0f838760151b031e8d9c0a9b0ca58"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsView.vb"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"75b1d44c6c74ccd7a9d24f216b0312ab4f1fc2dcca790019074641640b087c49"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsView.vb"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4aa165d4de1a4d48785253b5d5aa16a4efc33cc1a607bcd7813866bb4bf7eef"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"a114cff5ca5818ef835f4e994f33104d3396ec0ecfb91c42120247ac92304ecd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":501}}}],"partialFingerprints":{"codehealthFindingId/v1":"e42d97bea036a21f6690369dcdfa279ca8993981b5c641a5ea5abdad79d2571e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"17ec3b7c249a1368faff9c729c032bf02375d46cbc75af8b217785567a3c41c1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e9ec988b2c738eeda83ad696de56d53a4abff191d48cb87c7cbc40589a778a9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdd48da5adc9ef8114d161859a325dbef2fb5660bf998d75a1df00e9d04f28ea"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f869adddf6f79db8aaddf334190dcc9656d1f545489a801ecaff3b85f448bdb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"96d82194002026383ddd0b9eb485a2dc449563e45c68b147ed0f4b717763ef08"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8ff845c478ac25f81475bef21f6d0b59874f730adec76416ee24a86d35ec0c7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cb4c7df5057fef3b8cc991a2b0f662958ac202df93c907825d61a3df84ef857"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"a01d00b8758494379f5b4cde412a17ebbdab742e1ab73dd53e8f3f2853981cf1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"48c7e424a43b076622c9a18fb04f9b981d10ff917aeb0550cf8eb7664d5313ff"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcd155fb8ee8e739c7349cbae9b4c2184f7d8bd7b51821b5774e79d06ce3a2e4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"f909ea7f53e3e81f0cc140de562a7f9ab971639f3615192a1329a4939e735d7c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ItemSelection.xaml.vb"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"0311bfc06fe000908b3778eaa67fd1537e833917c704390b616d3c097766f1c4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"955b9e2875120a61c2e307f85f180867c3262d80bb262f73292d89117a2daf9f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a8dc46d1d522423b769a9773c10742e30b5e2fb6d964eee8f4f5dc75cd0e634"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"4909a889a3c401f9e88cfd5795adb36c209626c2021a4dc6e1263b2524574f90"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1d8cda0c6a6ffebf99bc9f8c302aa8bcac5acda8c818e638286e42aa2edd6af"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ee3da3b381300f6a5f3c41d5f4c10b69f2dd735e40dd3607756f43f8430ce94"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bc3e3f4fd556bae6076c18a81508f2816a118e915c9f66d4257b6863b9784af"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9d7624a53c76631961ce74ab7e9e42fa89ccc575ac9cbb9b2f133cc535e1bcd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"460fcbe5ffe94cfcb003da9f64f593e3049fbe3ffda1dcdbdce6efcfcd5b7e86"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e0300751ddb1dff3a2418ce71b7731efaac7ab73f423edd6f40a74e1ffa9d7e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"1761632a78da8b2fe255ad99f75354b4761da7c721d299d5f82c50a86284ca93"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5dc25ae8998581f26b4e8bd414cb3070a15babb7de30804fe7ef8224ed7de5f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca1d1f16cd3cbc2599e038c64618f33903a8c3209598cb2499a9e769e5455940"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"41261e694c2fb610d865290fefa02a2d381ec2a75f93a2f77f41257c7cae238f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"83d8433833cb12ca666ad04c790706c8430cb2c9abd06b3c0f5e629fcc8bcb2c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cd5ca29cbd8262c0528f52a511a3ea077dfa50831b20bb9c445132cbc20eb01"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"6568241d673ffb2028a7b0b5ed4df44a214400767974e259535e338f61476064"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"97b27783b5026b2ef93afbc348c927d7b68ce1d6cb6764c04755b4c978f1eaeb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"e149310ed05691d67f59b15bf2fdebafe263890bbbd1fec7fb555464e24588d2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"0020d782e7b90c7ebb8fd4bd0c5ee11bee00c3a43c16014ecd521eeefd35c7b1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbbb2dfdba4c37aa6e184ea2460d57217f6b05a2e92eff70491c904c10a621f0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"b49ed93bf53af65f6296c1ecb59ce2c3ac0a098ac7bb3c904c65ad3372c7a438"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"641478bd4c4ddbdd8bfdf2a880afe1df7d5e3d0314509cc527bf0d24fcdb27d5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"b783bebdbb75395cda576cc508040354c9be492214b0056c26c4e72b3b5ae75b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"78dca271ff804ebf6a4b26d589bccdc4da802d5f00b52a9c71b82b9111e902a9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"e03d5b53f315ea8ccad1b346344a10c47f0284f3440193eda85511f2908249f3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9e1192b87852a01f109e0562b17df78a8cf899e15b7df0b61d1aed3aed2cb48"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"049a6dc52f2379c7cfe55fe51b4d6e785b048816c8d5d2c387c8027c41feb14a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"426ef474dba0048614b63190a37bc3e1e4e45c67f215116f5bfc55a2ffca7618"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":354}}}],"partialFingerprints":{"codehealthFindingId/v1":"4612b53aed9740c8741a8119eff6ea6d295e20983b04bd79c50da25a7bfb3fa3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"2920a7f2e79fe411d3f3f240e41cd8019938164331dab27abd81035c48053087"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"0319d8c554b862995b3456836aab40a4c0539c82887346601739a06bc842ec7f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb141ad5601de06963e2aadb492a0e0ce7639010fb4f49bc0b39dd5b4ddd2ef2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"648943d3dd1d94542f90a66c7671600d3592024e31334656e8e2ae6df9311e36"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"bce7cd448222789161a369a0a4ceef029b09146794f7a9a88f8b9e9b2715abe5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"f75b6825ed20e751d9fe84133d5df72f1bf3c27a52ee33a9b9ac31d076d826b0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"068c098fa28506e2fe712875198690c430272d9c6a377b57d2b20e6a7f3800ea"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"7206c81fa1e96f5e9d8d3d630792517a686dce34798756c33c6db326f5495ab7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"77b364f0f11784876a22fa9fbe48918db2af313e9e4710f1bc97a6c9cb04c47b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fe0da4db7b5fdbd16209119553cd6d5441dcf671d7f35bc27d5b6185cc8f465"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfc30639e897005d00ae85d8ac485a3017cad8d4e29ef6522556237951661ba6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f2befddc8e9a925487f1a81dc8d9c7d58571d820886235df33b7a620a6bc730"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2e44eabe45828f919dccb23a3bbf4f518c3647de495b15892c7ad2062790769"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"5481a4bd6235b476853fa5e464a51a6dc08fcc120f58da0b51d4514b10df4f7a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfbf3ddf9a86850d512ab8494599bfe51687f8bebe9275111ce1a5c85fa07505"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"2eaea9d3e94ae8f3750f51ce20b4efabc7f9729da31d9d507d7ef44f74443a27"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewTemplates/Case.ViewTemplates/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"191ab92b996ec3848ea06ce6470e29900c800ef666f6c90eea2cf144a82630e4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewTemplates/Case.ViewTemplates/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"248d719bd3df037fcda3c80e5cad3f560c7d25eabc4666c8c7722669286cbdc2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewTemplates/Case.ViewTemplates/API/clsUsage.vb"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"406f3a7f8ac8542143a93c0a0cb5486d0dd262f74adbc4ee8ed91038157e2ac7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewTemplates/Case.ViewTemplates/Data/clsSettings.vb"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7274e6dc10892c304e64fc8e64ad9d00db43489c96deb7487118f0972a4c6a4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewTemplates/Case.ViewTemplates/Data/clsViewTemplates.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"454c423ce38f665f40be280ebc28695e2b8d9f8e967db33267c0cb26051744e9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewTemplates/Case.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b5062a0fe9b11411fcc1e158b8abaf4ab75887e73d5874737c6ad3d4c67c9b0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewTemplates/Case.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"665eac9088811371ad1fec792a3265ced3b16b8ee32e398e6663bb0c9d655660"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewTemplates/Case.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"b691df61b30568f6d86039eb7bef133936de3294f96d7304bb74ed902b1db194"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewTemplates/Case.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"30f0c15197305182668fe5e8dbd550f369c0e7a0cda73260cfb355a93269d6ac"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewTemplates/Case.ViewTemplates/Entry/CmdMain.vb"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"077f8b23aa54daa49ae15425877403a0483ff9ae9d80fd28af9d196f9022a511"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f59b0f44e5b9ad43328a368d56d14d2f25862e4ae8910a34679b963f13ed88b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d894e6a6b02106b058f707403c299af2b99af81ace8d56752f4e26e901c6feb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"56686753659afca5c5acf21b26e5b2888f9080c0872d16c6e18f3e25eb3ddaa4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"9319ef966cfd6f0272b88e78a76342f36ec05c477191c0dd53c16d60b2d4ec4c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"94d7564847aee34d70dfb5cc7bb55abe4eba8183377579a78af34c60826c42bf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9004ce18f343140f0851aa365a8488403e5ec7c4fb8599270ccc35ae39a0cdc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewportReporting/Case.ViewportReporting/API/clsUsage.vb"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"a249559633f1d873e695f4f8fa8fff45c2dc6fd6d6ac0500cdf2318d2688d5f1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewportReporting/Case.ViewportReporting/API/clsUsage.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"af2667d18493b78918bb0ff3da9591997d51beb583971d14ca5d9e56cdb2658e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewportReporting/Case.ViewportReporting/API/clsUsage.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"097a14b06de2a5e969771244c1f39bb8a3f5ebd834c151ee446ac4c1212aa5e0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewportReporting/Case.ViewportReporting/UI/form_Main.xaml.vb"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"f06ead0684f88586b2de9b255733ae39494aa2ae6e6b7295f149435cd7aac2cf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b3b494a54f71a591e20904d6f4de1b907215723bc870ce260261b7bf2d26579"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"38e4bc7c4ff5d32f46d99ca5e1747fc111ea0f9b5782c8633566555e19c225b7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"99919e9c64328539b6b8b8927ff355a3290f6e538e286a75a7840f7c43f0eef1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f94542e5513311fd963f5522ceeff87f055471c1dcd319b035ad4fbf50cf846"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9a0f7596f0df7a9d067b2e0b42622724e00bd85f1b85e9af1cae920c13cbe4b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"76f6f7675efe7a0611f1014dc5bb2c8a5e5fbef009a98643b9be9c73f7433ced"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"28ec5fabf3c0d46aff2c9ec0eb486da18a8e0fcdc6d45dd8ccbc944f31cf005c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"af2c9ed0b36467d2ee56cae1c7b361a16bc5da1825327c27aee6258d9bc70288"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"efb2cc838933747941dfff416400ff31cbc698c0e0464febd38b9bf2d6f5ba47"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cf84f628ed10727c786b9129bbb5461c580c4b6f93459cf5d5db1be2e288cca"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"d77754c23d03189c4327259b7f9135e7e21fc951f728a046ccea909ebc6af659"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f111dc3c1ed8bce1a52b1d926ee2f9b163f85fc4c6dde2d38a029aa885bb822"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b49b66ac38a1c4fb436023b4b26c2b104753d50d1f69ff0d20b309ef1ffb2e4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"f523580b783ec989ab30a079b509b82285d97e6de9e6b7455a5a969079872554"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b94f1fc9ff1d98c59b42e82e76d1da824c7ebeea2048bb54c8f6df5ba59f67e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"43e069d0cd4bc48022c207f168397d725502df823b88e540255762c59899b8b3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/Data/clsUtil.cs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b6a6aa01804f1148dca923b953bccdf9a09cf50efe5dcecf40d82f18b7a1b2d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/UI/form_MaxSize.cs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fc478dc6155c55523655af309c53a58631242adcf2af5db3c6bd9143f44f365"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/UI/form_Orient.cs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad0bffe947d66d9ffbd28f203bb876ff25af58a60e7e269fb9cd06b50c3fb563"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"c08e5521ff951dc8a68cb2b3be1c8fd6ec79f98e15b3d6b608d370fd6e51ab19"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c9bfd15ab08369898621b2f61f156b0157bca21289a4553d8fd180bb84cea4a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0fb5a27163ccf9936a31964eb7dcdfa930a0d67f7022e3df0a2733733057d37"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.BasicReporting/Case.BasicReporting/Data/clsHosts.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"d79b2727c5f143c4ab1897473d1b91a8844a95a63630d18ad39624ae32891556"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.BasicReporting/Case.BasicReporting/Data/clsSettings.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bdc3f28a66c8aad80b1199862a9a7db17a948604ae131df5beb3a36b01f3713"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad2dcbeeb4e468576f4d8a173c2bd9798958318ee8edd90fdc39eeaa2736e46e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"52fd3c584b7468dcbd4b42acd88a8add5e6c571b3039efcee4f99517bf1d4022"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"aff97db3a36e6b7f6e9527bbce2abd4a772db6f28cc096851d5f04a0d91632d3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"05b87daeec303b780ef6682598c6766e60bf75cf67eed6b21108d61516837ff9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"3db85c7c2efc90bdb109d9a026b78f210014e72ab613b572ef89306e994a5f45"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"500491ec0a5f9f9a124752e3faae4801abfba2af75c80d699d974cb0b916e9a3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0735579ac01ab2554f14d2a25b0591302b4e76e529ef1a023f89586e2f05863"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"a554a5b5b76cd5b05cf22744f82de5301ffe85c588e7a21179cf535f225633c7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b7b2810d7d6d5e6df7547be8fd7194f9fd39c9fb13a0f16e13b0723b49253b4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"57e31ffd27de324bc2fad8034b1cca7bd45bdf8002017363fe41cea7492b8aa2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2a3c5c9f97ffbdf377e9f097127574b359ccab6b2e5a234926d9672813a4938"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c6a8fdb0068ebc80e24664a78a7836c7e1b129cdf9075c286620e2ce755828c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.BasicReporting/Case.BasicReporting/Forms/form_Main.vb"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3b10976b1688a2e9dee5426f36919354e6e8e903e8b803e297ef78ba97ae036"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/Data/clsSettings.vb"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"fafad16182db6129aa57ef31bfa22a5680f4150cc231192673d09313594da7c7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"239b6eeed9aa52dce4bdad87505c9603fbde4fa5a28c97a742130c54fbab7c2e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ChangeReplaceFamTypeNames/Case.ChangeReplaceFamTypeNames/UI/form_Main.vb"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"649c9b67cb6d545f3b7a0f485994dcc9c60c30af2714b8dd86545d7a3a3cf338"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"1dad1008398e7b4b38a1204ce4bae864b9acde4aecf31eb4b913e9bcf0323a96"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"e989113c8e174d61ffd1a1ebc9dd275dd91dfc748c1971faf274540bc18094c5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"8094cdb69624813740bebfaf448c6094609b44188d4e8b13d5c36588b8d3da92"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2fcfd375cb131b0414109dd7ded37c5faea443b84fb960d8515275335acbf64"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"26b89a7159d098d0f15324f0164a92319fd999ada0fecfd5161412fcaf9dbceb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"971a7c79e100d9d45d26838dc9d75051a286dfb11afd8178ba40edbdc196cf7f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"3561d6cfb8d0355de60ba2341672573ce36a6b3252758df3b3d3f59650cc98c4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a9005a3d5e6e7e95b463d8e0b3462a935ba363fda0752b83845fee48bd8bcc1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"6574ecd38b8eb4eb83514283300ba2506c3a7fc6ace907602ca38371a4195c0d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.DeleteViewsAndPurge/Case.DeleteViewsAndPurge/Forms/form_Main.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"c02b68e65274d604df4fedc6bd8671dd89498c5477faa2a91d7981ca2c8970de"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e7af6d6b87e186582155d7f654113912cb56dd8c82aed37b96d395e63f4ea82"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"80397185065ba8c39ec3bc5089b6c043fb4d402f25fb02c87a2994add3617eb0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bba342229718c4bd7d7d990efd13ce2d63dcde30bff0ce508238ab7fe31cdea"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Directionality/Case.Directionality/Data/clsExternalWalls.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"30a7ed2bdab0bf5c1a5fc93a9337d1a982c1abbbee02a1a805011fc79ea3ba3d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Directionality/Case.Directionality/Data/clsPara.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"487700372e8cca7b978c65510c9656599928d4f2a8e6a989b4422c854eec059a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Directionality/Case.Directionality/Data/clsSettings.vb"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf2bc8b35497118dc8b74e4e5df0824533734939d699b0b165db5004ae6ffc11"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Directionality/Case.Directionality/Data/clsSettings.vb"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"65f047e7be0b75fa144e94f467282fdbbe815ca57326c3d4ede3d778669e6545"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Directionality/Case.Directionality/Data/clsSettings.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6124fe58515e143095a4dd833b1dffa006dc7d8ad7205f8cca5db1aaa15549a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Directionality/Case.Directionality/Data/clsSettings.vb"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fbca510ec7b664915d276409a7cb9275696f48c73b7eb81b90242fe86e2085c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Directionality/Case.Directionality/Data/clsSettings.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"21792efd90fc4b95cfd18ab3ed6e8b41216720a1f1633f1b0069224a1caad324"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Directionality/Case.Directionality/Data/clsSettings.vb"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"456d9c33e8848aa1d4d5a502677efb107b305bbc1fff85b4895c9647802a027b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Directionality/Case.Directionality/UI/form_Main.vb"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"e313f003de953d3784fe3c90b4bfc060d5ac11ab14496f059985c2d8d553d2dc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Directionality/Case.Directionality/UI/form_Main.vb"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"671251d85688afb8d45281ab5aa36906832f32273bb8fc0aca476ec83ee5a43c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca7cb2837e7d0ae665b3fcdaaf71ec9c98e9839e75a50103bcb98d67b896e157"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"d89de790477bea3c1482298568cbf460bc2a872d4a08ae40fe762e4074b2adc6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"afa76550f29c1c9a3219bf026f76f05406ba6581fc1e41481f9c667bc29ff76c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2f86ac4e24c2d29949aba07a33d159ffa42caa2cd0310315ebd829b205b1bdd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsDoors.vb"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"480b28f0fdf81b32fdb42a06f83717fe90647274a12df16448632942728d3060"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Data/clsSettings.vb"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"969c638e0f94938c05163a3915c5030279999ba6f0572cc2c54d4a24a10d559d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"96ad7bbb254f7025d0c42af8277f4220a1afaf554193463c21329c33ce10ac63"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"00d53e5b4c10439c2c5b6f1955f93fdb2a2a1ce4169ff0ce4f53a28f2fa32be4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"044fc69c4d8a837c1670e59bb5162b2b166cc1b77cc7cb071a251dee24a7f61f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":392}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cc7bdfc4564bbb7e3af6d1eb0419b17b7f1a0a2f9064392893e7a8a1d33a55c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"13f311823e8189410bfa42f3381c148b77a09f4c6652c3afd486b03631d6d667"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":487}}}],"partialFingerprints":{"codehealthFindingId/v1":"26736b38ae14285f196cadeb2370ac46df0ec783744e19c4d06da1a4169c9814"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.DoorMarkRenumber/Case.DoorMarkRenumber/Form/form_Main.vb"},"region":{"startLine":497}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9f860c07c38c9b0f082d31de517400454aab39e044f79ae2eec37be73e3dd62"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Export.Families/Case.Export.Families/Data/clsSettings.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2e2621cc82a7963b59cfd2ad014ca7989244ea3abeb52f5b536788eafaae839"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Export.Families/Case.Export.Families/Data/clsSettings.vb"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"f46f38d5529da4bad08eb27e80336585ffb6e7dc5c58cd93ef316cc4bf0c35c3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2530e3936a2bba24f8149f0e47255b91b40752f6ff81aadbee1e922e8fb77e4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"917c39beaa57a0487abe3fb481d9798fbb1ae117e675db725cc35a55873744b2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ae605956ca52382913424dfc6e8b669fff115e4bc8fc5483f9da2025b200522"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Export.Families/Case.Export.Families/Forms/form_Familes.vb"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"164a12f67f4f2edb16536f7ce0e440a5adcf217b450dfa9cbf536e789937eefe"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c1080bc696b4ded736756de12fdbb7cc5c91521671cab3c06b3691fc1645c34"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5ca825e3ca105f5a7998304512afad9013bbf10938766bf0cccab1c032a9ff3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExportSharedParameters/Case.ExportSharedParameters/UI/form_Main.cs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5c9ad4a717fa1421cf7d67f06792511bc538ad4a52249937454568583a76022"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"03c759401558a0180099dde7d22c37030a890db7001bdd9f3b2938085cdf045c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d1ca2824ef0ddd1aa157b8087fa0e8dd14c3075058689f2b2d42de82aa51c61"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d4a689a3a9c801fc12108a2df799c0c1a54ef6d0f27aac6983501380fa1e8d9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"956754995ae61c6e1286a5a735d180ae42f599af4d77624da5b5c961427178a4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e1fcbb3454a442b4d42d333ddd7f70f6016c4f594236d28482285d591afa2eb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":350}}}],"partialFingerprints":{"codehealthFindingId/v1":"3989210bfdb0b7169b10a47ce07ddb3a1151d623e7cd67d3141545d135e88015"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"60f40d58aa9e5ccb570554dbdcbaf974ea360fcce6abdc45998db0dd1efe00be"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":412}}}],"partialFingerprints":{"codehealthFindingId/v1":"a301cfd9054c63fb24eed4ca0507b0ea67d8354d718a8786eac1a7cfb342dc65"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":418}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7a3a92b8d4812bc25638cf25e869a756565b7ef165e181c3dbdd5156697c41f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":482}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fdce1bc40f8b0470fbc6502f8a015b5cc76e3d8c46b319493ad95bd0a9b0cc6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":496}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3d7e96dd43a61ce1f4fba025d4b5df2ddd71d3db1cff376ee483ac30ddee62e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExtrudeRoomsToMass/Case.ExtrudeRoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1de8733b8f9074e7f2eb222c7228dd7ba8aaacd6d4bf8c75f637f1a9c89c2cd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"798de9a83d973e3644754ed85c98823dcbf4f0d5abef64bfb6d7e148709ead2c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/Entry/app.vb"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc0b81d877b5e14cac960a9ac7b0756749ce9e6505f27ac32346c0d1b9272052"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"19984f496fed5fc83b179ec1653e796cebb22a54bf7d9248861c9dd2785732d5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"1349d359eda3edd0bfa7352a166cb08809d594893e252ccfb09a111fb2dff229"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a5338f3b206ef71c62b50a8267d5f646c7ad86b5418e59e85ca9eacfd2cf48c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsAutomationTest.vb"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"6157fb515c709ea18ca2b3a512505222852735f06d641c1a96e9197a7d487761"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.FreeBenchmarking/Case.FreeBenchmarking/Classes/clsSettings.vb"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f2b0626b8039ef8f26a5a0a8b5bacaa5f488171442379af7258b0371a4ceffb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"e499d4f0b6f758840f52cb58e9f8d4182054911b42545f20fcba5fd64f074e09"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf4c69d666d17b93db1c6da92d7b2c889bcdde1971ff834a055132bfe29543a9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"427ba997f99d22fcb3cc2760b0bdaeb6ae143963521c409c5325f24a5cf09a36"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f7c1d2c9fce3947855e703bb62bbbe2067c68b20c9efae8818098ef693d3a8a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsCategory.vb"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"0603ee2b280bd74da83f209833e4f3d2b63081d90b39fcf3ae9ced2db67d7563"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"8278b347fa6c699c5faffa231b61485fa572532823fc54325715bdfdb76ef071"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"e94988ca574b45b21dc690c7b0e47a80c389a1ea4051826a7d527d833aabd7c7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsParameter.vb"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc0bbddd2b61b734a7e120ff6adaa67e6341fe6aa1cfbb087f3a6505792b6225"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsSettings.vb"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7e19f787aa874c4ed1af075c3fdb6b0828668146d7659d9b5e5754fbea851ae"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsSettings.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"a444da2d4c72ba647cf8b474c4a855090666a3e1b6d2fe469832bdb26c23f3f1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/Data/clsSettings.vb"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d6cb720617df70b40d95e7724fff22a9cdcd5335d82f6bfa82f71cc4d8dcacf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fa70565a3af771aef3849c2219ad1658c6d93c52d21a9aa36c622d906f78b11"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ff35842eae24d78e5a79e50823c8829cd437d693913c6bf2c93024aa234f1e2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"54a50769a6d32d22424e8062fce5a6b75a7dcdeee99bd9d9391826d315f6c225"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.HiddenParameterToParameter/Case.HiddenParameterToParameter/UI/form_Main.vb"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"432db676e419219b2a92c8ca002981e6ccdcd8d75171c4862c147c28841e53e8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ImageToDraftingView/Case.ImageToDraftingView/Data/clsPara.vb"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"39d9babb3dbfce66a03418143a59fc1553ebcb1454784b61c096a9271db19ea9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"2017b6f839ed78be559ddb066408b3e565d66ceec4bc1c6f6ff7c5b058bac58d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fbcf9fd7d1e671ac4db710e0d337b60a009406a26ffc4c38bc8d9f3e8c2cc96"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"7caaf6ef1eebc6a86f8abbe58cd0d09864380262a136c50fa046519fbd5d8ce6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ImageToDraftingView/Case.ImageToDraftingView/Forms/form_Main.vb"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"2978f0a0806fd1e6e09b467b4c9816742c115114d10894df8ce5a0f62ad38bce"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsRefPlane.vb"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c143cd5f54ab9e0039f6b52fde045ed656cb52a3ea7222e5cff0b9041384d07"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3099f2eaf3b979a17b54902fb06f5459a669885dae6fc0278245ee85ebcd97f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d52bf626fc3cb07481b3bc613c5c993fff0bc00dfa99150707de25abc0a1f24"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"433946d8fe30544aca51366dccf1091ef6e75cc6f13e31adc26db020bb09f9df"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"f00a41e012726c077acf0bf1fdc9aa721770d9ee4caff75477a864d9f5a04677"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"07d4da0a3d0428eb66d8741fb9b99f4d5bc087ba436fe61c569103d2db140d86"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"3175fd92634dd09b29926df9ea2fed70b441fed479b879fbc4491e2b0a94f4ff"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsRoom.vb"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c1a6d94cca28932adb89b7443c494cbffcc23e8c618743671158f036b956c0b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"07a5b12316a0a3578af8168b7fe7e3e829f5a9b8ad626bad2eb59c20e936e045"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"aeea0e5e13844d5977ae1db7c455a4ee20655c97231f491d92409e444ad17bb8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"140ebce178568f2fe30058620b0c5833de17fc3f68089fe3756f6a57c6baf914"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"fff9f039a6446f68ca0227066d82864fb7331ac6b3eeba10fe46d78f86688a0f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"8dee4a159530efe223fd7ed17df7a45aa7d3196debc46bda459c9faa42fb88d5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"b769a48116e8a6feaec55e94421095141099550dd7adff9c0bef3b457de99691"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"8aedd306c9c60d6e8b145da1ed288fd544647b6108bc0f4ddf6217c9bba4b813"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcd76859a52172417f4756fb1785910929af2c146da8587e9ed2c22bc6f33736"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"caa477adc7f6a118514925c637fd8f9d059a3f9b54249a878bc4d034ec0c7b5d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":373}}}],"partialFingerprints":{"codehealthFindingId/v1":"84bea4d2b23c40c9e2a09c7b601e46e6f4bdfa0b4b10d5033fdc90cbac0d90d4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":378}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa49372d4c4e65bb0c01c36bab14d97940ce8e9c246b9e184d9dbf047eca5829"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"24930f77fa472eedaa6ed0229ff1f62a60ffbe884f7b8a16683e6a2b67a10bb8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"f643edeac1726f8ee9b44eeef42213a9c86e1b642918dd9639a1bd916c94def8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":439}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b5d72b9e53129d9b0e87ee99f94136a5067c42ac7877c007f709e2878dba232"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"09a3e884b90d98e92f2590b1aa7cc6120806b954f8621e230d18eb9e0a1252a4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":483}}}],"partialFingerprints":{"codehealthFindingId/v1":"016cdd0348f0cd7e7104f800116269cda3c9046f3ded0e44f496ee816008fe58"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":499}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b2969deb91102e8b3407f05e5d6aac125300dc9614b84757dfe4f253b31dbaa"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":526}}}],"partialFingerprints":{"codehealthFindingId/v1":"b828bfd1392dc8ff955dc55730308b12c506448c6ef420e724c783717df0f906"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":531}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fab7c2364ddb8ff2bc92e329b99721c2223a0720a86a5a033d27c64a392846f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":624}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ea9c266d9ecf55cf7e7646092d2cc79678c8bdf83c51b72637e63c3be9af80d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":643}}}],"partialFingerprints":{"codehealthFindingId/v1":"1031167356a0c1b5c67b919d8c883e51e1aed24d271fd305a8a359eba997e70d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSettings.vb"},"region":{"startLine":657}}}],"partialFingerprints":{"codehealthFindingId/v1":"de952e42bab1d11c91e37cdc9a81dc24222295171c94a4022ea30fb41d9c4f97"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dd195b5f591b73ebd8256eb3b42b10438402159c43ff195c4de3e8588c30456"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbf2da04c12ddc710db7bee985606c4c1570bac00c04c2b6f1e2a87b1fdc3c74"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff77671818830029a5f5890cdd9c893900ead1583f2c517dd434c11dfa5f65c2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d086586fcf563c82d0c70611c615ade5a9d73d06e61dab0211bff366bb5a6d5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"986870316beedee7809f9000470605ac4696d2ea8bb5933c366cc7e33b50b7dc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"177e6a072cbcbd41a6f26b94067cc6ff443fbe30c64e1958876c0ea813400d55"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/Data/clsSpace.vb"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a78a0854aab07fa1f45ab301db50bd5b99239fab451a273f78c4725c3204796"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b42a5fbcc84d45231260ce5660004f5c90b23159ea36da30465ffcaa2e9e585"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"69cef4cf8bf945f081fa96483403ac8b2519a073f5f4e4ca1d284d3f5205736c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"72d7e8cafd2af49dd6404a42bdfc1e902460d4c2e82497252687cd6349cc13ae"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"15f530bd026ac4f863c66540dce54d9a98301be91ad08768cc361e8e24acd837"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"edf77713e05a16708ff078e5a0e923ff918dc0772ca688713d70bbdcf52ac3da"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1312675cd5a766672e2b533c68a8e15e7267b1faf6482f89411649b794eeb4b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":377}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c73baf4e3bdfae0cd4506a8e25317c254c966b8feaa37aae2af8cc58af5a4ea"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":430}}}],"partialFingerprints":{"codehealthFindingId/v1":"83cd25c6330a693ccc18357f8c307b33bdf51f8fd8ccc8364331af192e2aa0a0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":435}}}],"partialFingerprints":{"codehealthFindingId/v1":"c304f72637fc0c77ebe26e0848049eadc4526e2eaaa525958168daa146dcd23a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0f34e00ff195c9c19e3d893a9c0787017fb84b8b51d3fb92417eb963e13160e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":455}}}],"partialFingerprints":{"codehealthFindingId/v1":"da39fff34f9557b586bfe62b09f66f18e358479a744285842a0fb83dd3b0e3ab"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":458}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf68a5231b8f459cc04186322f451b6e93ddb300c65d3da00e8e7a26c6d99bdd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":484}}}],"partialFingerprints":{"codehealthFindingId/v1":"60773f8a594b352b82207eb381c60d72fde99f0c4b2e967301e388870324da78"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LightingLayout/Case.LightingLayout/UI/form_Main.vb"},"region":{"startLine":489}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a63e16dcfa73fbfacfb1b4f51430e38ab30016cc84720e84dd61fce5a8a8e6b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LineChanger/Case.LineChanger/Data/clsPara.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"733936d107f318fe623cba284e7cd2eee028b11f3bf63d1b09cca811d6ee262f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"073ce7dcfa04b79b94e339e61d564c692671b2c774a0856317f69894676b66b3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LineChanger/Case.LineChanger/Data/clsSettings.vb"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"248be0b3c7536dffe499def87b1a22c5c73d4d116a42c41f77bd177e458e8cf4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.LineChanger/Case.LineChanger/Forms/form_Main.vb"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac7c1a39a5aa6718e25b47bff00b9061403cd48a21fd64d8e5500a946d158990"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsPara.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f15236f9189ec7bc1adf092f21834cd5524a0ad9f4875f5ff7b6c5a6da033c8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fdf4f6bf2e4ab38aad0478e1a8d360d7e651df04f384616c62f6bfded9b1694"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"339e4da4da63c069299176da737b1fafe5f37df0c0b9abf8fa4104deeff9e477"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsRoomTagInfo.vb"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"46b61f5cf898df329e1738b0301ca82aa30552f55dee7a22a7f6bae71f92ca3e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"876a74af54e4d2f69b248194f0b616c7235c2acb2f4e70526a68e5c134991bf8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab55de9b5725b3c641aa9ea9b9ab1d663fc48e209ba6fc35506cda7d939fd0c0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"737afaa0c93cdab7f8886fbc1132e17684cacdf636c2531c10ade833ba228f3a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"abaf844eb35485c2e51b1c8b8e3415fb62ae662c39866759874b64c6dcc8f64e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"d96dcd53c73e06ec73897900a3bbc6da13bf245ce447515e989a6b6363445216"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"cea46591812345e462623ad572bb21b0a5b8f455c1b24dba9602340f3e1e6b6d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"efdec4bf3d7c43a71630c04b24b9c7fe7b7218471241c07fd96c9e05d71dd3c7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a6c192918c88ea91f14abdd31f1c245c66e1c1dfb1c60a37969ec51a4be6c6a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ModeledRoomTags/Case.ModeledRoomTags/Data/clsSettings.vb"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a92fd9f1d393f35ee63742ecaba8b986c82854d66580a58a8a17f98f91f7c03"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4f82be72b7acb7b3c1dc8e6c48b5f2d564dbbb62135c9f0d39957ac2e8069df"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9d302d1e4d668a185414f298f04dbb9994297c0eb3851435108e953eed1ae75"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ModeledRoomTags/Case.ModeledRoomTags/UI/form_Main.vb"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f8261098967aab6bf234019e8ea50868a52ff28056916e84f52edaac7649dbf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0686176d67b7f5568615016581354c2b6b22a4e184c114366ef321e8dcf8973"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed82027c81ab46dee30839634f65903f236415533ba9c7b01a86fda2061b523d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ca4fc5d530aa76efa1a23205f723a3170d6e7e2a49622933f2c404f94aba4ef"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"928b9f20c36b04453e0561244f0a2fec05483bd8d338eed382d126fb4b0767c1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"c70be5940b123bdffa69bfd36453ec89d7559fe648a46a38f4fee9d4528063a7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"c770b15c2fc5113174a0a60f96d678561d948671233e2566b8cd5507fd9733f2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf6934fdc3abe4b1fd8df67c799d6789568b40638fb2400d2bd6504ff73dade1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"bed33028979a5f100b1d268a3a7c0a47e2fc9bc65e9e91d7852d5d5444c2ebdc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff7b4192b6d051adff039ce2dc9f1619a8ef623788364b38fb301d23b9f59794"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"10899e03a923a3d52e8deed878bd5a018ddff5393b6af89f920e17faf1e31a77"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8ee880a8c80e5b9cf64854f82141ccc1d5c979fb7b2ca16d7d96f5aca5c5357"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2a0a651a83fb3d50875362578673d2cb08013eff3b30360c37f3d9b77a1306e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"a47d9e36fdca2aff1872bc798cd028c7a899af1603c119895fcc009352acdd5c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"b33fe53b2d057fc7047faf24b63bfdca2825e601e329a1f28b0d0952e5176ec7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.MultiViewDuplicate/Case.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"e728e217acc32faf488c551acafd706086bfe7ad7a14a70c545cad25be30aee4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a4e9f831364d6cdfc02fe324c92f45e40148a72a0c363a0c2ec033520ce90ff"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cf8c26879a8dcce501bca6a50faacf8a1f2ec52c4b5e18d9caf5a1582e84ab1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"af39dd622ecd4b80913c30aa4d59b06f878bf43da379e7c52e7a962c77ac9ae7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"f967057d79a69650e38de62c3de7908b742af0aabbde70b71a9968f9ff9bb89a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ecfef12f0af74501eb7cc1be09ba9715b909705f92e9cde672d46ac21f09499"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0223c295c5d403d754b653091c9caab491407ff6de6f396350e7c3bc82425a8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"90c7ea98e639b34d227a48062c1fae0a39b7ba1da9c68c74d3e18132d350f04a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c8790ee46136de3016faaaf3f83e78773d8fa7ad00b0c82c7f32c547b7c54f9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"388d520869c4a14253387c1f2553be86f0f984c82c94358d348b58e5111ee128"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"a28fb50f55d40a6ceec43eccce730aac7285c404a1b4d37b660f8232cf8fc369"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"169c733e18174f15b49d04e4e35cf66116854eec9781bd2ba749d6db88df0cae"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RevClouds/Case.RevClouds/Data/clsPara.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"626ee707a14920ae4cb373e76862224083a4ce2bee1eeda988c165f0fcec30a1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RevClouds/Case.RevClouds/Data/clsRevcloud.vb"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e225bf8132c514403056356fa79d4db34034843fc827d5ecda2cc9e7a56fd11"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RevClouds/Case.RevClouds/Data/clsRevcloud.vb"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fd65aaba75e9a5c8998df24e5ba1e200fcc29cfe05b6caf82de5aa296f08ceb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"b82da700f3eb1a36ef1006c77510c46110ca6feb495cd71ba66808cd3b779fde"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"950e3b0aa48cb100163431db413b94e4f93b08594a950d662737c4dbf0817a24"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RevClouds/Case.RevClouds/UI/form_RevisionClouds.vb"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb233f2a6f513b4fb4e6280bc9cc1abf43565c2bf3ceabcbda44ffcce81c2a7f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fd637c19af58b24f5d9d25a9685bda31c30b95cff5aaaca29eb72ae54ba89ef"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"33587a21a1c582d341c5f0bf8c8d6c5616264752faef74a2dbebc458d4fda228"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba7519dc5b4872a31c67d8e10ea95c73714e9e2a6ceefb92d158d2b1ab8eebb0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"527b57d2407e0f6e3de901102fdedebe3d529a18641c1c751c719657a57fa7eb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca50f0c5085cdb91901dd87cb9227217c23fea872c06834d964fb38fcd994295"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9e300a33cba8977ce38be923fcc7771ec818432ea7d4a6ea663818a1186b8c6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6c5d1e8af406e09ba19cf2caceddc70a2a2593460e8f4d145def4a70329ad1c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"a50ad42d564b3b76a4b3d6b95d90803140969d1f3996d5d1b3a541f664066eee"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Data/clsRoom.vb"},"region":{"startLine":420}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d57749280880bb72e87d17f55de9154c31d133fdbeff5a56ce641fce2038587"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Entry/CmdMain.vb"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"b70c6213385285e685c22a8a095dbec551fd9bf54b77c524f250bb7472ccc381"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomInsertionPoint/Case.RoomInsertionPoint/Entry/CmdMain.vb"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea9b5ead8c242d78ca6b12ec2413928b16d79aca3356d9a1c0dd883bad179792"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomInsertionPoint/Case.RoomInsertionPoint/UI/form_Progress.vb"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"d02210a5d77a7d5f1e84c95fa4584f6ce6fe8d77b18eaba4071fe5eefc4aa5e9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0a9f561549e263efbfe0e0e09eebd479fc0dcf36a6eb59566ad6e74499bda82"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"576e512cbd722fcc9ca9ed5185ec742bfb5ac9547421409f8ace2d6a62ba5bd1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"159c15b0235bf1d28f822ff960ded41a8193ab3299ea5a86423251af8878f831"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"31d81fb5585357caf44006e3ea44831a4866f8dda26c2bd3a846b6eb07879d8b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomSync/Case.RoomSync/Data/clsRoom.vb"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"afd212f7159f0cae78ebe1883457ecf77bd38f873c78e8d79372ca1c22e4ce5e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"f90585343d14d611b8ae89faebc0eb36aeac6e298628c7807d285ff4562b24d4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"0727b7ec9bbb0ff3be9597f8af5fb418e6e83ef3e1c9241c6e290a15608fc847"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"011eb1a71b80ede2b95631cb6d1fe1cedf28fa90587d073d12e2999463292111"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3f2f2694f38a66ed15b228a34b9a03fe27f667c33f4212c63a8acf853d71abb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"e20037348c6b600bdaadee37f92c57303e06584a93f7a4a2df622e4220f39050"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d4fd2da6ef307a11f25fd579bb3c1c92d6478e335b89fcf14812dbac6349406"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"23c75b6adc0bafeab919eccb326bbae07cb180b4c23fcc93a2be24321099dee9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c5408b9f29d2bf77a163d54998bce4facb37a1e226a06b4db27bfbe4c3a9a08"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"6065fa06a9b053a532100733b01860d6de3d0dfe22596065fd7f1195830a3df0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomSync/Case.RoomSync/Data/clsSettings.vb"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f66412ab917e2e9a2d66e8ee7d2bc08a5a470be5985ccdd75fe15a07e564ece"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"4908cda506017db17630018788512e5411001672e130472fc6e795df54463157"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"27904434ea3a782d890e9c851ea69cbd2d0668c640a048806b1b21c08cf2ef82"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2dc2385031af1425945db1db9668cd052404c57eca52bf84c30e6eaeb2124a8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"5157d1533c258f3fe28ce6596edf733d9d7d2028ba1e721ba7c6bd98c7469dcb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8f982322753045cf35ad284e832b02580e854830faeaa017032a0cef42f99af"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomSync/Case.RoomSync/Data/modGeneral.vb"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc05dfc763c2f92bfc103a4b3824b1af9e99ce94c699b83db4ee3f0bb431f63a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"75d1f3113de2819380058bf85cb6fe1a6441cd2976b2d77aa68a45200161fbe7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b81be81507f1c46c34916fd9045582d79392dc24ac767e45fb721c88891210e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfa1242b05a228d72c02b8448f331e3e9fa17cb4095aa23fc45cfbd275da2573"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"77d5fcd0632889dbbd0745ec9be44ef2b15592a034763b40396421a871114f3a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"650c299e3a93ac494a48ff5941d3cf0faf0122702b19706dd97d1c05181deb8d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"660e3598fd379e1d08e43df65fb7cda592f8990f267b2c6c1fa932efe8467954"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.RoomSync/Case.RoomSync/UI/form_Sync.vb"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"583c5f9dcad030e0a5baf9cd307c6e49f5072d34d1e5b05798f77c1d7779fac5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.SharedParameters/Case.SharedParameters/Data/clsBuiltInParameterGroup.vb"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"51ff93594fca8e6d134e92552ecc6782e4659769d0a955a1e3ede168589dcff8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.SharedParameters/Case.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb8562d0a7d4a892a815a5673fb681441b74735ef3ec2df17691e856ba12e627"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.SharedParameters/Case.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"1202c27f72633bdb6eb9d1b3efeeea7eb259cb265f3fef273862892a057e417a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.SharedParameters/Case.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"93ebbe68499e7118195e4248ab65e6b65d1780dca4fa05d6541d9ff0ef02533d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"8be09e306424bdb2883a1bb2ec6ae3dee03fb3584293cfd04a00373e06b3ac27"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c1ffd118de8379424f9358014fde38cc1ed84a3b1378757d5be9fea034d1422"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"87a4a116207fb33da01b11e9a1b7957acba8ebabc8c68561016b3415ded37b14"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"219d7c6a44e9e400c64b3f016b025c31e3d30547c8e5d27293d9a8018f7ddebe"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8bcad7ae69b77554b2396e018d3bb9905d68b119cc51638198ae4a03dce8d33"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.SharedParameters/Case.SharedParameters/UI/form_Main.vb"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"35f8abd6f299b018911bf74a1ed9b92ebeec14c759d4bd2fbca2be5d4ae14ae7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e6d652bfb0a4f4b32209e08b0113f7501929e65a8566397cde1edc60cf4a9ab"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsElementsByCategory.vb"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"70422486fc65233ce0f2203efca039a434e15f37f2c035fc3ad7361965926467"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f0f0ad92e9a264d4b6834daf43b670b468b970468ef3d278ac63e3893aa1f26"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a40dd3162d083a2e03c6d401f38819a4d03887027d4853530412f238fecd64d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"faae5cb1d7c2090e75c41a2d5c8a16970a6ede25ee3365903d6beac5906cea5a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"840492c39a5efbaaf39b4d2d82656a5004bddf464cbd9a60776305c37699bbbd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"b009299e0d790f94268310c44cf125029b38bb87741739088d01a5ef6091a711"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"a538098bc43b2629be603bd246794c0e0c4132f3a8fe110bca8b11d78a09d419"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"cebb43ffc08a5001006c9a6e15717ee319e736622fcb7d5aa7a5380f489b7bdd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"831815f635014931109208a933f8c58343c20601c18346e427b901641dc71ce8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef45447d4ca9bc384544ef9aa9c0b9b3c3026226b621ba99012de4c0aa18e6c6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsSettings.vb"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"d43b7507065354d407369392565b93ec02d7914a2e7e806c53e53edf33040939"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsViewType.vb"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"d32b13affab1e32345d145e62bf30d436a301ac5cc4c60ee8946d25005f0ae04"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsViewType.vb"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"097c899697b511ec6eba7acea53ac157768ccf7c7b0775ecf6de367153678c24"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsViewType.vb"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"59d940546c408c9fb308c4421ef770ce4f78192af1a9ee5187676c37b7a7c3cc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/Data/clsViews.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"d06e4aae3840eed82be312f8597d402964c78823b8c1b5181120f320afdbcdca"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ea0b9169b19bc92d9f94b287723e6ddd680d6bccf3d14a5638ce1c9cc291ff6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2ad47b04c5ce9e7197b209332e892d101a2a7695027ad1f3a656d2b3442106e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"21155e259cad0efa552dc3ef1cc391163ea4129b17ce541d2517ff447f29e149"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"42af876ccce9ef6d83dcc0243772fe5cf0df5455aca527d38cd14610cd2249c7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"503c821c4df267338be947c07456581f4e08e8d399a7d79c13e7fafca23531aa"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"5141e3c787c33958d1a6190ad9a49780570d43c9b639d21a39e374dc469c799e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"eaf09e3f2dfdfd77827ac9296700c417c3252fa4e94dbf31f61cbf69125f623d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddb20cb383568c899f4c558753d0eac2345df3c5fe02128c3b7777348e2ab1c6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc16b75e9f6c00fb62b8ce5c6a40b83f5f2a2fe0933a604ae96359d1afe18b0a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9f0ec9c992160e0442f2cd3f1539599f27b82b0334c7a20a8d37f9eae9c63b7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":335}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d9a96d15c3a645f95db8686ebdce67d0f40d88afc5dd328e37ea1f70851a304"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"2504209d2c7a2cd0e8c54e2b72d265806cb198540fc1184ab46f20c9072d7c8d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f3bc00e8e8fed62a1fbce9fa3fdb91089a0bc44e598fa3a9dc1344b5caf26ed"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c6097a0c3e11fea09bcbdc0f606019bb792956896270a84661c9d74e4c95dc1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"82fef46430ebb733da17c945e1f8f899d202fc0c03e3604ca6e850ac20e19257"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"77b8dbade9bfb09003a3af6c35beebf531b69177a39b7bd9af2d916cf8d3daa4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee41fb06f12d2fc50b02f6c4c693f9b9083b896cbf9d010dbd8078bf77c90d75"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":502}}}],"partialFingerprints":{"codehealthFindingId/v1":"176b9dfb0a8df6fa4748fdefb38f6774a4542f3b05dcb882c1de985554d02f26"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":523}}}],"partialFingerprints":{"codehealthFindingId/v1":"2129974c4387ca4e2ebe3a901de3be3e810c782e7aa870feef05935b8b81493d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"25cec20e0b77204a74669212e817744ee4dae2e4f581587cdcabac7b631cc4a0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":565}}}],"partialFingerprints":{"codehealthFindingId/v1":"80e6a1e5dbc02b31827d8b560651926e600a38d1475eb3b38895e864bb34a60d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.DeleteViewsAndPurge/Case.Subs.DeleteViewsAndPurge/UI/form_Main.vb"},"region":{"startLine":631}}}],"partialFingerprints":{"codehealthFindingId/v1":"59b416f58327614d487be9d241cf0403649b314a29a53b7b1594e2cd660797a2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f24adc29d0706942c3b5c19a54d58b41ca1d348eb0b5d46e57c92f031f7fb12"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b23ade186b8bbc34cc7a767fa625a54cd308e2b2cbf0e0fe6806ab669c4985b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":376}}}],"partialFingerprints":{"codehealthFindingId/v1":"319161aa4685c27d4c48cd728cc62ba0824eaaa21235a873a53599b307299779"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddb64188917b77d7716ee66f4e5da339aeb28d860409773eb9a12f22da129bf0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":397}}}],"partialFingerprints":{"codehealthFindingId/v1":"275344042374d90b28b35213e6df0a33fe866194be714b98ec21e314569f956f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":424}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e272da60713ab18a5cfee09237d708267364951ed4d6fedb1675fcd49675b1e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"dde8abc096b5fc282f8bbb294d9ae611104f5a441e4355ae7315fe8cc2339bed"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":458}}}],"partialFingerprints":{"codehealthFindingId/v1":"abb98cad6bfdd2d122f845af46e9e1bf36c21edb296fe182081f90af9b2a95f3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"05df8a100d8f47c5e8de867c5fc00e33f7de0af92b900d6df9d44f1487fb7abf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"f441a763c66280870ed5725a5bebb54548f1bf1cfd68546995bcc84ffce8de3e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":577}}}],"partialFingerprints":{"codehealthFindingId/v1":"41381ba5f5eb05555559a08227e27b5a3c312b626cba2cf8d4d9b77dee27fe34"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":583}}}],"partialFingerprints":{"codehealthFindingId/v1":"70c986b48215f043b4cec3327e25cef1793ac92539e1b69a6b6b292f56cda6df"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":625}}}],"partialFingerprints":{"codehealthFindingId/v1":"9dbf4c85ebdbc1cd59e545013d9c1b828332fa005c143f26929b7957715311c6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":690}}}],"partialFingerprints":{"codehealthFindingId/v1":"c44c1b12af2c9c43ade49bc1d8da33da673c0df89bf65ec7c999f4eb5653c80f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":814}}}],"partialFingerprints":{"codehealthFindingId/v1":"c36450c36d518136b4101aa52bcdfdddc421dc40385ed0672c9bc6f06ed7414c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":851}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d2fc637c37232d1ce384a62975a151cd61f25ea5567aa1d0733f38998453aa8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsExcel.vb"},"region":{"startLine":1043}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ffab0d40e531b86f543acfa7a67484232fe2698ba95b18fed8d0e92eea479b4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"75faff2dd9748871df518733e2d43ffb0317f91ac469f107c3dec5986689859d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"58bd990f5a7414b4bc5bb83d1a415153785037ad2ba3d75b4c1f52a3ebac9d27"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"b58a017db9f1a093f17a595cd0534550053be82888429fcce38735799e9b1d76"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoConfig.vb"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6d64281e5b6dda0cc9b018ac1924393bf2cc757b5d4076405b0063e45effd19"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"92b4a24fa0a993d4b640598d334a98433922bb94faa447c5578afa342dc34643"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"2792ff6acd994b825f6b68b9c7590e3b680d692b0af116d8b34d5618d37e7308"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4803f585e192f9a54ea5803ffac5198f1f2fe80d51c68da4c4772f31a3565c0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsIoIni.vb"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"e41686b50baea91cddb68e39bdeef3c5d9fabf88bcbbbce8a556b146787fff38"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategory.vb"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"2169c78984f6986a3049a744473c862d308e261a32a08f337831ecd891c06474"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"761ce884a451a216cc4102e03b8baa18f6176b30c3512cf1121c33802fb7d0c9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2874dbbea1d17e1597bab57002c5ca2fcc4c8304dd97223153d2895d6b13147"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca2730290f1e2a73cf2f24778c788fe2702d1b95cb402589c351ee207cd32226"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"1578a293011ae106d479dda95901d760bbb5184fab44560587b58d90d67d61c0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cff50b73d865da095be04b075785115ac3156525dd4aee12c1a1ed52c7635a3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bdd4cd5b1c1bb8c5991708ffac8feb62579e2b0cee07150b2cb428e41414d88"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"81bff0c2fc6b2ae521cabddf025ce62a258addf55e22532ef868af28b9d27df7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"d196d01227c946cb5d758090794919196f2f61e5dc033ac7e41a94c8c96e2ac9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"c608687dbd919b6c5d853f1bb9ebffbd2526cb085a3cfcba9db41c979ed62e73"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"f973596c2dee888b48f6c8032bebe28088dfffb3664b8978c729e60593877a9d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":475}}}],"partialFingerprints":{"codehealthFindingId/v1":"86df48cd9420bb882b3ae70b9ca977b3f8e96b11bade8d5f35465a05a01154dc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":486}}}],"partialFingerprints":{"codehealthFindingId/v1":"67ab95fbdc1499b74aa611a23ae15a94e1f0396367272407636903fb1ffa3bd3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f76dd84486e16929df4860956c431243e2e0869a43fede1896869ead071b661"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":525}}}],"partialFingerprints":{"codehealthFindingId/v1":"36b58491dccc23039553988602a66eeec9bccb80032ceaca81f0fa56a8875a89"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":551}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c75403d20b54410785b1dfc309565a22823e24408caa92b7d37ed9164e2dc5a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"6804d4636aab5e737916dd226008b4234ad280ac99cab997176ba22b066409c0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":569}}}],"partialFingerprints":{"codehealthFindingId/v1":"52ad38e2fb4faeb6f1dd31ed16838e47a5abd7964bb19db4d7995fa0b00230e6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":602}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6029af9afc67fd62d7d20a41cf9d6fb19ded2f4962f0660791a0460e74f3553"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":607}}}],"partialFingerprints":{"codehealthFindingId/v1":"e22130dc1034b2594f1baea03ed8237ffe5cf65f27d7a8bbddc10fc088ce1fb1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":647}}}],"partialFingerprints":{"codehealthFindingId/v1":"76e3d3f0366c4e62deb600de5bc2a9aaa9133c085d5c9ae75742cbd433be6cec"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":669}}}],"partialFingerprints":{"codehealthFindingId/v1":"67706c8ef39410c09196a3f291d4c6f347c61ba733bd6ca36a1353bf67f15ee5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":698}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b630436f13dc6d43c7a75aade94ff03241d1d26b248b326cb0cacbfa7b2f51e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":708}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6dac1ed6f2a39e9960e87ebf852135626aa0878e3f1e4b153efe5db5e00c939"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":716}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d0893095844fda239efa6e21d53c5517ad158adf486cd64ee490166e455dec2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":749}}}],"partialFingerprints":{"codehealthFindingId/v1":"190d6b396580890b70b6a0087573ee464a865001d369e3e70074b24687fe4974"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":754}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd3f45dff8254c81f4997adefd21d9845e3a83c3b1bc0433dc5c2a63197fcbf7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":806}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbfe9fe5ecd02d032fa673583599d422f0e49dba48423152b4e7fbf111475238"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtCategoryData.vb"},"region":{"startLine":825}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e067dee76689db785806f72ddc670bfc7174c7c5a7189410864caa997284850"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"db4cc1be412123543c5a1b5a1f565ffda93116886aab58ee2ea4ca995d701522"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fcbf153da31cfc2fca5596bf28fef53c130537af4a6c26b203ca000da4f143d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7487703968425c553ab9ffb9989835c3248eb4c9590777c588c16100ddd4c14"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"04bdb5db3e4ee2593263cc0d13bd61125cda1e552800f7bb5e93f1964cfd0f88"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"2290d8d75f9a05d2087fe5b82ea6a70a63e717e432a3c879241cc95f315fef8e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtParameter.vb"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3fe0053098a18886cc5da2bb5b2fd06c8aa529bbe14e93d2e36148aa4e26223"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"28ae09a72cf6005c2d7eae4dc6bb27c47f347eeed59dbeda79fe0d5cce9c1340"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"098fad33a1dc22c22fe53000361deab755483a159b8b41244e5a9fa43496083c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"4152d3ce8813c07787ee8e01d0d34910af7a8ec2ecc36bc9c8befb8aa24d774f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2fc5b864db9f5b7db829e3fbc88ab45a8e67e90ebbd45af10e31715006a7c8b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"d42a106b448ca640dba7ffa08dbdc8a29d7404fcb1961d287275df650888feb6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdb06c0c97f6c072a7c1c25242d68f9403e638053d33904befa9aebc638c7c65"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c25a3d97b85f2ab9d5f5e9ac95476d0750447ed42cfb68f57e122f98c9a9660"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtSchedule.vb"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b6ef62f37990c7ff07c77feaccd8040658d7a52b8b58d3469738af98b16f5a2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsRvtScheduleData.vb"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd783c9e74c64c10dc47f9987d7db072de4212841f181b08dd6ce7039064f91b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"124ce1f599b2ae7480ca08efa670cddac82af43e50a3ca36ee00d24567775f37"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"de90d4ae57c2fdb9abf507019aec7c922db09b098cfd0e4ac1307c33adffd462"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8a5c96ed14b72a68f1e0b72c50049b7f7aa8ea455b20a57e88f74467f263381"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"2172dc5ac4468ee8cd1eeb19576645e60f23b44e634c45dabc8f9803f6783cf7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"4893e6154ec503d796f11926b286e60c9cd87f896bc12a66a6375a46d64622b3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":407}}}],"partialFingerprints":{"codehealthFindingId/v1":"e977ebd60205b1dfa9efbaeb2f1dfbc1ac3ca1f4e683f166a1762217e8e60bbe"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":434}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b7f476e6dd581cb5cf33046d270bb761da891024081281722bd96f0f6fc0e17"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"de843475f44118b5d872c9ffbc88b8efd754090c87e40c3e6e4cc562f4f98f6a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":462}}}],"partialFingerprints":{"codehealthFindingId/v1":"0da2d72af6d9595758518c69731d5f5abc9e53e0dd5f1741a48c2488610d8951"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":526}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f3a30823f584620d13b32ebfe7ab9a239df55b1c51a9f6af13a79fcbc5b3e71"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4c8d61800f33c36217cdae3ed2b1b4b0569000ae4a4bb47473557b822965f91"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":612}}}],"partialFingerprints":{"codehealthFindingId/v1":"f87807d36a97d3ebd35c16a9c7174f66e498a3afa32e02380ff76266362abcef"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":633}}}],"partialFingerprints":{"codehealthFindingId/v1":"24735fec66d97e750f1933e07b1992f6335ddfd3c99e13206f3bec169126c9fb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":654}}}],"partialFingerprints":{"codehealthFindingId/v1":"2692aa219eec7c92906a4114529e6ece650c6a18e5cbc9184021d871676694b4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":677}}}],"partialFingerprints":{"codehealthFindingId/v1":"1178c62a5ed7e63b2b2b872938e5d7670936fb1271f168475915e54417d064bf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":721}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c4454f7ef1395a8295ae31e1b98e72a5390156b6f62e4e569172217ea15c6aa"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":811}}}],"partialFingerprints":{"codehealthFindingId/v1":"b16fb9d27099a4b3bacd25accd31ce7027b79134eca68ec88fbbf9490907eccf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":879}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4d911fcc2764623a9dc58e11418da829a71d05ef51a3a17c7805932b2163952"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Data/clsSettings.vb"},"region":{"startLine":899}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b0a947c14e4dbb2f042f1af3d1b5ee747ddc2dd368379c64d042d8eecb5a4ee"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/Entry/DE309158ACE741799F90E9210DEEF5F2.vb"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b477acbd6666d9ed10516cd7ea38da86e8784c34f319b24103b0d10dfa26fb9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5772f4283710e537719e971f546e181684468e398fc7c8abcf351a4d4d67992"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"9dbf5398e6284e12917a10d1bcef7f027f65ac0783af1d174bf3461c226100e8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc7984ce6257435f9bb0214a34ee7148fb8325cc1379f234b611b21482d452aa"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"a77f8ae22bda7cfcd071887e6ad2a6a7d46090bd021a0f5cb3012af5dea60de8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4c0f94aa878775a71b4694932cada083b53ee9f50523d9f2fb70da3353f7de9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"639b1be77ee49b927daa2358885e6c15a2dd666108b942b56538e9e3792fb0e9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b8cd6a2e67b38d2bc44e9aafc335769b6c8b458fe3c6609121f227f441c4b6d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6ce9bc8261bcc4473e8a30731a9f5433c0756142a2051ecb45c498c2c315776"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"96fe0791242699acac86a5bb9cc191a63a1826c51e3244feb7dbc5051650683c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"b16aaba21a6da1de345c446ba4da1b10e463f8925935bc5dde9afe4ed5cfd058"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5c06569dad3f2ee1e63c65f09ca3103e31d52622aa10aea774bdba7a0d99157"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"b889a38d7ee5bc03ebcb9f62b3a4cf452cc46ca72376a93886e25fc0da5d551e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":356}}}],"partialFingerprints":{"codehealthFindingId/v1":"dca4bcf598518aeff0f8b7177bcb9757db24fab1456e8e52c8b77c3065060357"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":359}}}],"partialFingerprints":{"codehealthFindingId/v1":"2374241e12c1001eb126e7d4bfabc5fd33c3d2a329b2bc013b1436132bb880ac"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7289793140b2c84d5cc59123a7bb340ba21bcc2e84f7beed1749a026630d890"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b2de6c2995b79c0071943ad922c2c9840b23ce1b86d9a2cdc88aa90ebcc9c57"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":496}}}],"partialFingerprints":{"codehealthFindingId/v1":"e79b5217d98d45ad390cf42f9867e4cdb32890411ce01f85d26b8b56168d5c1b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"a031d7a925df68425d3987e9ab6381d7ab9cbd828f73dca238bd5738d3119273"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":620}}}],"partialFingerprints":{"codehealthFindingId/v1":"70137f22d42b1c7e298b894541819a264c197ab5e54791bcc962bd237fd0b701"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":627}}}],"partialFingerprints":{"codehealthFindingId/v1":"19344adeee28e71833373f44037b93c268e97de84afe889ffc7e88920e2fab42"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Export.vb"},"region":{"startLine":691}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab70c1770509791b166d3c58bf04dab87bdd4c8502f6aac3a863ed3789793c99"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"136a8335123a1d573782ae537489ef0fca482a73d68ceb6279e3ab99a3d32453"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bb0749f2cc002daba46e79b967797e599689f14d80bb847a0dd5e6797e55303"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f174e39e675971e42605d69a10b0edd6bf6fea0455c9fdb9af91e271ee1f9b8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f5ef615c54db5a9b29b068edfbbc11e297cf907b079e123d5a43486c980c6c5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"e270b9c9bbbeb03472549019eb22dd73a11389349ed884e263ec4af27c4502a1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"429a57b187948a6caea332e59644103784bc8da19e23e30722975e2542533704"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"4955f6e449dec686cb77c6f5ee0925978ad4d70c42cc3dc65bdd6e5531bf17e6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"6638c8e76370e5cf967e0f35bd6782dedb6fca32aa0d25a749cf41bf65d77948"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_ExportSchedule.vb"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e0ff752af70cdc9c16b3afbec3a8a94d90c19a7569d768ff498291f40203f2b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Progress.vb"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"2851d7a399940641d6ed0ce3a39165e3d6f2787f029143ef82aa74358d6045d9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Progress.vb"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"cacb7560ac7c992c79aeedf7bd004f00846c685f0d291264aa25f25fdab92f49"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Progress.vb"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fac4ef851a4ae72f410bc939bea24635faa74509a19ac105312defe61307d06"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_SmartSync.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"64affb5564904aa45bada81712b5df89fda29b65cf8be4ce64ddc520564fb0f8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_SmartSync.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"e392ceb54dfe119cffd5736380cd8592e44f9eb0acf3ff599f16cbc3d317d9eb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ce2c1e31e948f7c7cf7583c33717edf217de83e34403f04e8319aaa443f002a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"42c496e1a5c9d0b4ad6cd7efd32219aa8e17efbf7dbe51fb2d36eb1cd2e8c27b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddb46d5e8aa1f347cf50d1d465b040d84ba2dc771527a7cc79ee6f18ae65195c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":341}}}],"partialFingerprints":{"codehealthFindingId/v1":"066d9f1ef23b790cea3c6a6489466fa88f38b129ebb24df93361e0b0f55016e4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ef36d6f836222fdea04ff22cd83f0b054f8ef7e94834f816eb1f97760f3039c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce16ba0d69ba1ae7295d84b5bf73b922db59897bbe55b7c15fb155f9502aad19"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"360e0c8c80f54bc13b4606b8c7edd8176f90a9cdd0da51b9ce75bc75b68708af"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":395}}}],"partialFingerprints":{"codehealthFindingId/v1":"76683dc1549f44b7e2ab2e9ad9cd5bdb71ec0f811c911a08b5716d8ef057c1aa"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"d314b1327a1b832b758f6e921f4fbec795a9e693d7b096968869843ee35ed184"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":475}}}],"partialFingerprints":{"codehealthFindingId/v1":"4936ff3bd3a4927924dabfd84f58ebad1d2fbb0bf4743858818815ea243227fa"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":512}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a903406067be90a1046b62f499a1cb635d59158ec27e4e7727d83e4dc36950a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"6748182244661375b9b2967a444e310e6afd9c278f2f4a6585cc65cdd3d2ff61"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":558}}}],"partialFingerprints":{"codehealthFindingId/v1":"22660ecc538bac703f44b57048e51d02e9773921b0da1d2e77b0f9b41817af1a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":572}}}],"partialFingerprints":{"codehealthFindingId/v1":"f18d6d8840e3616be48705d989711e30dbdcfa62081f5f71995dcea7bc79e61c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":635}}}],"partialFingerprints":{"codehealthFindingId/v1":"702fc6ebc142456174b754646d8f526056f98ae87fbb471675204f6cb5020c7e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":712}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f640da71de44671c65d9c30286fe1d8f0148a058ca907f5042a295c2f20b6f9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":798}}}],"partialFingerprints":{"codehealthFindingId/v1":"382851113894a18b9d00ca57e703dc8ee81c6c9035fd02c279866e022515e31b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":821}}}],"partialFingerprints":{"codehealthFindingId/v1":"5da8607856f21b4918dba2e3a03b2a7bb8acfa8aecdf4c767553c3b40869f213"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":837}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4f6ed19ba450c7831c99430c793d9d2a927eb7936976d715576b4ef08fff9a5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":840}}}],"partialFingerprints":{"codehealthFindingId/v1":"453d4023f0c8bc9d1aae18391c292722ea5ed01c52257d5fda0ef404908dd126"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":855}}}],"partialFingerprints":{"codehealthFindingId/v1":"decbf30c04f130962e78b1587d7873786aefb5dfe25e693ef0fb0e43e55e70ef"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":858}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9fb64f2f56fd164980032d3f93c0c271267efb4f0205082e711f01e0172ce51"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":873}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6e723423d50051e65e3bce4546ac82633606881a16eebb3fdcd6564b941b74e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":876}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ae54097bdbb866ae36115eeac898f524a8738b2310779074c66e8d43d5a811f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":891}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8a18a1ae76a7d0a7e30e010c38e2caf42981d075dd35fbb8a70a77001997c77"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":894}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ead591f50b7b5ea00c502dcead610e40aa920f184d0aed847ea8ea9e11bfa00"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":909}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c5136bb95e52b389b969e4b9c6b5267e9ecab86b4934b87f75f87667787bc40"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":912}}}],"partialFingerprints":{"codehealthFindingId/v1":"4119b81505a7a6829c6db3d9ab578a4ad9e0c3f8e94f3ca02db9a5a148e3cb5a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":927}}}],"partialFingerprints":{"codehealthFindingId/v1":"81cec1a51148964d9a234a10b740fc7165b543b1a625dc166c2e9a869f9087b8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":930}}}],"partialFingerprints":{"codehealthFindingId/v1":"051a89d581c2eb35e17e13490e4660371fcdc30f1eafbeb4e9829183734ba538"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":968}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b05f46c4a5364d99ad73fbc5a5a37cdac6ab9e4b998cbf64f2a16d52e1fbd9f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":988}}}],"partialFingerprints":{"codehealthFindingId/v1":"d22b2271788f097e7262bfd7e0865ea60c681dae8cd0ca0277cc6d8c71704357"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Exceler8/Case.Subs.Exceler8/UI/form_Sync.vb"},"region":{"startLine":1015}}}],"partialFingerprints":{"codehealthFindingId/v1":"37e008f04c1c64d3308e8444189676a215f608e8301f73520ba746120af490dd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.KeyMatcher/Data/clsSettings.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ec22806454ea9b9b1cec75f1593c1db53b402e2c87bc3c16729bb084fa959ae"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.KeyMatcher/Data/clsSettings.cs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4e15b083ac13bb985b68ffce5f7dc64623bf0f3d94de2171032e72fda045db3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"387b5e2dee230e7bde9a5d80bcb4a659c9b3ee75ed009429ae7da02cb9c43512"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd69e6d124d68b44c2aa948a89ab43332d7650ba3975c26f49e3998e35136f39"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bafb7fc124d213d747ad0999ccc7ac169613b76e290e5d2768dd07df4c9578f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"16ff43a9481213fb5231aa0277d74ca2d884249c1612658828e593fa11c644eb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsPara.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ebe5934a797f058abc000bced83d37b828309bbcf7a5b1bd96acff32511e5f1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Linestyles/Case.Subs.Linestyles/Data/clsSettings.vb"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad132be01c77451bf03422f9e18ad7e5a0bf0de00f90d88d5019b75af7ab9bf9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"c32334170570440884a15b04e94e1670467eb1a1504ab8a99800d44957e3a702"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Linestyles/Case.Subs.Linestyles/UI/form_Main.vb"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"219d5552ebb280f184ca0854cc94d883e0747a70d857ebbb6977876d438fd353"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b0778d7657e81bf0187ca5e0d1d6d14a2cf16ffb8566eea12de69c4934abf62"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba92e095e6b4aace3d4b64ca81d13e1f3be16fc65a800f6030859abd9f24a5db"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ba2df7b6ebb41d69fa3f6759389b0dac9a17e4bb0bb2d1e2ddea491153db4c8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4142ce226823b071d922d55c6413eae78115361c009a16aa8c89b89b81c12b2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"be6b4b6df920069b65b83d089a3e163a94acfa3e82231375aae74bf73af7d190"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsSettings.vb"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"968934e2d3e1fb5f3ca1f4f15074fadf1f3d3eedef9fcadfb40937cdd9502a11"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc7e2e26a0d09074b8924dbc0acaa657b2cd6c4f66d574c080bcb6722ff5ca2e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee848bfa90618a061ebc872121835d6b2da0206381b34211373215184e8b8f23"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecc6a552bc5a00e4ca131003bfec87bfc2283f6a43cacee837394e8ce5e38c82"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/Data/clsView.vb"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5bc17e4706a33aa0d13a868250d4a46d39e52b408a8687ed28e263336d55d1c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"a06027aacb26142a0028196411cf1921b0d52172a557d101c623eb7ab650c76c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ac98a582f146191fcc254a7f31d5d4c1963a861a9b288ffbbd1088455e55fee"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a74376121018559b9009d2400252c2fc299afefff069bd7a4811655894569da"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"39d351db37f490b2d0e16e661c313f7b90a5174998046524c53da9ab4e93a30d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c2b6d063e60fe52eab24bd93d17a977853447dfdb7bcbed9e4fabc932b31f36"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.MultiViewDuplicate/Case.Subs.MultiViewDuplicate/UI/form_Main.vb"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"f16214d30bed372a8b18d2a5425010eafebae4ab93fa19542f2e3f0c9ff46236"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac85546e1047d90d0fbc94671b3d248b05f3da6bdb04f8912b3b723ec353bae6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a440d312d1f908cece2e8b813aabff7ba51e10063cdb0402270b4ef2a2f6fae"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5114ff3d655196fff824481fe771293bd2ef1399d3220360fe62e50bd69a306"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"092eda194b3b4bdddf40363c052595012c690beacb848dd19817ea8ee222c15b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"53cf5f2bb93fab855554b61e595b016a84fc1c42583621c9061cc6c3f3252efd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsExcel.vb"},"region":{"startLine":416}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ca7215855e1cb28e4fa8f7076d6e5f9d023d660d483193403f8f3c13570d0a9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSettings.vb"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b7697e668cf6658e6e1e9d93d49db4ab3b6842bb0e5548bce4f7062981faf7d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSettings.vb"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d5a80b84120219f0198cc9a809e55babd60e829c16b2eb090d65d990d92c151"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSettings.vb"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf5acf480838e1d7cede1a553acaa155db6e74808047b177cdac39e3ee2bb052"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSettings.vb"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"9570f32110454a710c3235db331b6784ac7496082b94569c4032ad053d7aa431"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Renamer/Case.Subs.Renamer/Data/clsSettings.vb"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"b09ba9f0d505af7af6ba438afc7d097a2ac6cd563610c5f3e9971a80a7fd9cb6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"2be694a206a0f5eb32a7b95def92cdfb3210f5a3ed2d33d5434cfbba7986b0fb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"75213c542635acdcbacb7c99676aefb6c0bf93be5056ab49ad1715d758022e34"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4c59acb96b4e512c53954ea37c20d097e229252c8e73dc2a0d24b1d8e2f3aca"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"781b2a27ef4c8b8de9ef1c9c03e3222f8056f29674768e723369ae35f5dd32a1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f037ca6747948088d4399546626c1c7037ae36791d4a861d54376d4576a119e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"3643f6ed784ebdcc35018a4fd9dac2c3563d332741504aa63a21c9bea366e8a0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2d02a6e372b83d5e5a3e9ec2ca0e01d65bbc11aba18f001add1001262fd14f4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"af475a3994b6e435e591b399a52d47f29abf9eeb5f3cf82fb0d0e56fa756d1dc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"7047338adf1d1ded21f0ff04ae4592bc1ad2e98e994009ef2a51c01419ee61f7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfaea626a53a813385e40b09497c8809ea8fa37c4259a98af11e3ba05104beda"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"032bf5871e4f243f191589d9ae0f4b541ba487738df0a35377502c55f0b5e8d6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e4c71332fe7e0c67bae79542440b8dadb7f11e2b227829612416ecc2d441bc2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":440}}}],"partialFingerprints":{"codehealthFindingId/v1":"20187ebffc5b7a4c23b07ce992bd635cd3111e5467a584cd94bd62e6a7c97da4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d42283ceb285f9ec9c773340875bbdbef5dd79dbca36776c268b88a21bd9f09"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":493}}}],"partialFingerprints":{"codehealthFindingId/v1":"f97fe590396bf9da08b6d13bb07d02f337efb8bbf6f49fdc3676219b363f666d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Renamer/Case.Subs.Renamer/UI/form_Rename.vb"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"68f3b6c67bce2f712c1eb1b8cf8fe365fbeac65d60b6f75f3aea30dbddc93a02"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsPara.vb"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef309fb25fa267427cd34f6f2035290c724378439cb4bb378a1cce406ccecab5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsPara.vb"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"24372a93a144495e6eb4e90b5835e9ac2205a3ef35d2f955f442173b39f9ba86"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7d2c54cd8f76fd5fa1e08a964ce3528ad898cc72c5b92477728d65528af93a4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8f18ef9a28d9d091e813891179afc2d63e1ce6cec7e0577874ad84ec359bf47"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"b72041ec2fb67dfb8aeaae14df4435246415d28309efd5af9a2afb484424988a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d7e4569f7daf97e1f8920f6f06e6ac354e726d577209e0be8db17bff46e0b62"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9c653bd84f1bf68f3fddc79fbac7490dd19f6da8be49eaea9ee11542dfa45a4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"3159f5fc0674c9391b95c10b8366a2c6ea479a401dcf89c481cabb52582da9e0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc1d80e5f9f2f2b0e1ae16aa8f608f339179b139f8109f4bc88e20ab50aa3810"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f895c8024f458d8a6503fc1a872f56b614afba3db16a9a8e8c9d26486f1b51d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b40be21bf8004ec2a45d47d4c9852258dad0c057780c21470a47a1a9555d11f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f24024d815e8378657979665f90554066c80650da4bc5460971480949ebb854"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"602b7a7fca7c6db26c75eae4758fc68b9522d1aba11240210e245566b5ec20a5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7f3f982ddd025a4c7bd07fefe4e243cebd263129309e80e3fdee1b7ff63c894"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":448}}}],"partialFingerprints":{"codehealthFindingId/v1":"c694aa5f544561886fe0755d94236d5a09dd87abbdf9a39c012352b70a41371b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":456}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5b845e2eda334fdf44aff8abb1637155f2a18412df648bd3387ee3e2d302291"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":495}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fc9266f54289ab08bcec635619be26b232a29d46d653f9de27253cd24bf14bc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce742c494812788536d39fb7bc493a67a16cb537dfd2058bcecc4f6a8111d976"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":553}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f2d7d2db4243a6fbae77a0d80be1c10737944de6d2821b005a29cef96999790"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":583}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b3d486ad6178f53dc0ccc236469f14114b8cabd2c041be85653f6ce23053126"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/Data/clsSettings.vb"},"region":{"startLine":606}}}],"partialFingerprints":{"codehealthFindingId/v1":"82d94f2540f30926197fdc2bfc6bc8433310a1e8f13f9534faf08f38fcd396b0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"9961f19ecc26c05c879daf4cb7d288ed1e80d9d5be5a8b0450cd70f01b05a8cc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"79c5812710445013afcc25b1baf33dedb844484f71ea4c4405914d32c32c585b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_Parameters.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"bce0a89f07c8ee9b7c7b1c2987a453b9d393fed599a1b18e3fb575600e1bc089"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"80092ea93897baf2570e44cd7a1d5680e0621f172c16fcb5ce1e0c4f175a1246"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"95052c6e83cbdda987bc00b3c6ffca377e86492d231ca12d28f80c6bf94c5bb7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"004720db27b28634a9b23e751202ff50e574319f3d4eef288363a4daeb81f31c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ad5376e104ad174187c49b7b56edc8cfad3bb7ba94209e50b84636a83016503"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f845af9ce60503f181d03b2c5c19f068c620d6e737951d60f6357569510062a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"f477d86920903c19ea4e14fc96ba23a7659ebf8aaab73b4c52f54eca12f4cb9d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"464b1f92c4b5ec79f54fd82028e842a5db8d5002a936783cac753c43ddbbcd35"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":396}}}],"partialFingerprints":{"codehealthFindingId/v1":"461849f51354668ad9789a7e976282d2fc84df81f7db8ca3b371fd7f4309b08a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":431}}}],"partialFingerprints":{"codehealthFindingId/v1":"1371a3e99deb12eb547ed73cdd09727d0f3704a2e9df3000d188683cfcf84504"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":444}}}],"partialFingerprints":{"codehealthFindingId/v1":"21fb13ba47f41ac0a17ebe00448911c3177b4f746003920a27e42d03ca148f3f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":473}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ec5b0a95c0eee39146e72b22bd97cdca136807a050b2498cbd7b4822899410f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":512}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fb44d39947ecb0c0b358c786560ee0302f3d2aef99552414f4a1c54aecc00df"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":611}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7c6bc82a99a4267154d424df7cf4d3c40f43f6b93571cb7e7627a93504f5f2c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass/UI/form_RoomMasses.vb"},"region":{"startLine":619}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0252cb15dc11755051ab5fa22c9530439231a1582c22ff4c23302780ff681dc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsBuiltInParameterGroup.vb"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed4ca247f0b379383b4b0743687a1c6c5f2607883bbd73f65c487ec27c04491e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSettings.vb"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca09db1b3f9a7b9a5b46cdd8a317fe5cf75d374f41bf6fe018216b41b326d55b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSettings.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"837513661092770a3f7d3e434f47c015bdd5f4da77c8706405c7dead76146f74"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSettings.vb"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba6118b9098cad901679d39386f92873212a7a31882de8ed776597201cf23b36"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"7772905a4e6584c7b30a6a49b39fc8acd54a815a476c73807350b4f2a9a87032"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"95016f452270a2032ce0855c6086ea633151981f40e6536ea98268c302905aa8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"056b6d5d5a0b4f9773d8f98b6f236073061429fe7be57f353a93f926a09089ca"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/Data/clsSharedParameters.vb"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"a31fe4b1af22d643a70df880e801b1d58556096c6e1468c4ab1924f21d936d05"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"c38eb17f94521caa8ff57556e590792e935470bdd108672e823653d36d75ab55"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"401d91add15fe12d97fc9df50423d25aed6378443573ffa62932785011c46ab5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"8538f60a5dba774338810a423270c77ec232c1b7d57a410bcaa3ad77bc384a46"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2fbe59062902e36ffcf670b83a04fc46ec14cdaa77e0144380f0c9ad9709abb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"a441f611a09ee3ef1b75981602994d839e7f2cb5515fb2ef1894e09e7bafdc1d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"766c36ea65a15c1905a46c6fd087da3443fc421b9fc1ca57148cc0deb0719e28"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c584d2b540a69074aef9bf77313a50b4a63d322b13a357663d73bcd07a5c159"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Main.vb"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"c34c3cfbe64aa498ce98f643d85a29db461d84179b00bab449cfeacef7e7faef"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SharedParameters/Case.Subs.SharedParameters/UI/form_Progress.vb"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"da8566d93c2f2c27ecccda20c4481700da620dcfd1fd6742b4f8f7480027bbaf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"f10e67d5c4390ba11b6dfbd63b27d9681497e9581d7dc7d07cd668ae6b7eea11"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8b7c2ad1966f747750b555f0b3516107959b71236dd64e03f09b34ec32476c4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec95df31c079ca27f287c0b4524db4eebf42826197aeee0ca1273bd6e86b38cc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsElement.vb"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5398b9b6170f37e9aa8fbac5d38cdb1bd09c297046ae3e25014f9aead85058b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c2a639530fad02644535388409f11b9f0146a2092cc82496c430bb3b3364da4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdcc83eb384dfbdd993be039e0dd25da4cb96679929719e40eb9c7a94df669a9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"98e306d926ec96ee53f98efe992b23ab56848638eda7da0c849fc609f09a65b7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb48e9d8089d2be611cf138e8d908889a57861715b68065d6129761659364002"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"69b79c2d683fe8e594764996814bf18fb716e8f13c2f7cb47fad098ef0c8efc9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"47d8754d37519c6962ce1a9b837a3b4de2edaea083956ff86a18434e469431cf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"0596bd17c0a667e23933d50bac9b169a874abfcdffe218c2d2bb63c5d247e62f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"78c55e8fc781498c76217731db027176f1c3a2d5f86b441d67ad2498ee9d19e4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsSettings.vb"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf9a51afdad32b5a1ddffcfd5f2af7b004bce7f538d44c7f766dcf8e508f0c81"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/Data/clsView.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"85388e3557c169341d8cb70cb0993f28c3a6c41f958b98ec78cec768eeb36f92"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"80b431d5025f9b763ed9b7610dde69355c015cc743ea4c44b8af6dd264553ca2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"4819d3281a8af92908d1d887b424787824bc623c7824f47db2c490e929263612"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"88d6012068f3529013475fba2dbd1d186fcfdacada181f6635d3606a612ba229"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c2764e32c0799e5d295ce40c58ce24be6c8bb9c3399d9e4acfc2a3e0ab535e0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":333}}}],"partialFingerprints":{"codehealthFindingId/v1":"91d3454824b776edff89934d8e58bf686b96f8e53d2c8515b329849b03f5c3f9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"f535d297be94a1beb983a0a968db92b3e97e4ad4d3af056bb6f11a6a444ee738"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2695349b779a9584ee0b12c645b86fe63dd76ff27f4e397bdb9c3eb377bf823"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":420}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4229af987a7a3314798df4035277ed92d99af0785e47517bf72d5150cb3ba03"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":427}}}],"partialFingerprints":{"codehealthFindingId/v1":"9767407e594f3d7c0d69d4ed18d04b554c83b5235ced18bbf488e5c9ba6df5ae"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":434}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6bc52d6ce3ae0eb4f7cd062af0657cbe8b0b2d007e67128d18d1e237c13a86d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"823f05ba2bfefdac8e1dd3d23aef8365bbd89ce7ef9510a1b01a2e2aa48035dd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":497}}}],"partialFingerprints":{"codehealthFindingId/v1":"91afe2efba64d7df32203f93a64936e29b596b81287e83396b46e37800fc2464"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":523}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd74d2d871782bec94f32fa66ab494f50479093ea4bedf467d33d9dc76557dbf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"d230c89357f0ca6a30022043fab4e643ea844587e363d2765601f671ab85c435"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":628}}}],"partialFingerprints":{"codehealthFindingId/v1":"f55c7a48d841a7da047aee1242df93cc97bf310b9ccfd8fcaa8730ca1cc74fc0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":684}}}],"partialFingerprints":{"codehealthFindingId/v1":"920a6fdb9ce39980047c6aaaec9415c7856c1ed6d42cfccab98a706f1249c81f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":699}}}],"partialFingerprints":{"codehealthFindingId/v1":"76d466929493355b9e478919c5277efe4a321d7fa94067a8e455041167689b7a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":714}}}],"partialFingerprints":{"codehealthFindingId/v1":"26c177528f999ec6fd197f884f253a83c9b7b037920bfb66dabde78b997f0035"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":729}}}],"partialFingerprints":{"codehealthFindingId/v1":"52283ff14d8f94ef0f10350b5075ef7727bf05ed663aeaf861f8a1771ea668b9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":737}}}],"partialFingerprints":{"codehealthFindingId/v1":"71993c6641966acf19d0c2c756ee84dadef06969f3b34875ab02b15cfe16d3a9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":744}}}],"partialFingerprints":{"codehealthFindingId/v1":"90502b1abe8a8ee4fa7d2fd0e7d8acffb67118222ee1393db26e8d96ab2aaf38"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":751}}}],"partialFingerprints":{"codehealthFindingId/v1":"329f2f8a39f38b1f9f26188ef53044e6c2a1ba14d286da9427f2d44602a1d473"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":758}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8da0bfdaadcb9854596b230abf30395d36682164225ba8ea95d074bd1381239"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":765}}}],"partialFingerprints":{"codehealthFindingId/v1":"5291fe3b8cd0e8b1fd5f3dc6ddcf8d46c572f382bae34a76db9ea9fce4cda9a8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":772}}}],"partialFingerprints":{"codehealthFindingId/v1":"df71ce9b8a9cba968b3f2f1164dca97eaca7cd2d72c197550225d2be87f77397"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":779}}}],"partialFingerprints":{"codehealthFindingId/v1":"49e4c9e5244379a74b2df7ea4372916f87f45138f7c06992cef51bccbe1db8f3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.SuperTag/Case.Subs.SuperTag/UI/Form_Main.vb"},"region":{"startLine":783}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8db654ed18404be2156df528129f6f378c4d48389307e6ab45cccbca57b0ffc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"35a23f74158f66b2c19e5fda4b7acdbc611a486cb3bd606bbf7441dce3ab87c6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"404cc2e11b8fb2e102ea46994b899c37c5d96448186dc20a98e52a864d9179a7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e2abcaf6993a9f534970f636c17e8288b35cad8253197d8e39e6b2570567259"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"2075b100557bf2b90d6016be1bf5e162baa4fb8c934f39450f78e4d87fd6fcb1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6187901724c9397ce06bffa2f430ec8b61d28cc2095910c9c97c7fdb7a103ec"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a036fad3db1b5f46ee7b12dd8036e9e563d0da699c6f47ef8628c139a65e191"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":423}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e8ca37cbb4c9493e4e8f949dcbda1ef3797714acd68194120e700c75ec406b6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":448}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a040b9c058710ca15d57651ea48dbd7401aae71b89748f11c8a1750bdbc470c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":494}}}],"partialFingerprints":{"codehealthFindingId/v1":"24d071b6a3e21b798bd2314f21187ef917d6ed3d3f7cc7c5db870b9df1ef1428"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsConfig.vb"},"region":{"startLine":536}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a8d920378d4eeb9cb427b7a6b5c4f322863c304e4784234b5a30a9312f3f088"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsFam.vb"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e0a1baa199d354fd36fa59f64a38e46830b63ffb95d4c0cff843c62de0b3820"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsFam.vb"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"1156c4d168fe32f2c41ac700f6546c6619cfe2abd296aadbf2f93c2b80e1f499"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"eeb2e2dc65d734389d0c5222fd67e46eae76068e06f0d3a7d7b3f7cad64db646"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd3010b87173e3f6cd7f303022b22e491312daf11b0faf2324fe641f4b10adb7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"0176e10f5162876d678d4187d105373f7324fe55e875d9f5e9a7a4bdd2f0538b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c65094d914b03f116cb145414db78c2e1a9fe1829b51ddd7ae0882d442568f2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"384e6904c67e3e7c63a49ed84d3f8f1122440dfff6eff164387940dc2d44b09c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"dda542cc462cab03ef3647a0692ab993a90b8e5d9d3e08925890113c97dbcd51"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"a74910940e42a9bd808122940c34f1a657d464107bccace94de37385827b1e5d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":419}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0961fc22cf0a0ff967d9b24630be8f2dfe5f5858ed0cc9a80ab8a8789dd911c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a1d9ffb43364e45b41436cb3592f6bcc8fb6481454995464772f16ad42e9761"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":476}}}],"partialFingerprints":{"codehealthFindingId/v1":"54c96d5aa23630e21d33766a6a1c8ebd8d27aa9ae62e15e0ef118e8fe73b6bac"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":487}}}],"partialFingerprints":{"codehealthFindingId/v1":"27e6848e516fbdf829ae74327342d6d0ab140ccbee1d275b7d406ca1e944623a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":499}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2730f3cbec4ce1d0ef836f011d0404d4db7eef1f77e2770bd6c39c74983a4ce"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"682e0e549b624622fe358ad1de38e92a33b2f2469bda01f1cb031209d14a8241"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"80b5270fba94c1380768fa30dcc7bdc80c23b4f037e10090c2564e5937fcc81d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":587}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a5355f2edad4eb2bf53c74f7b41fb9c9f2198a1b96a9019ade8ee8702659c23"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSettings.vb"},"region":{"startLine":629}}}],"partialFingerprints":{"codehealthFindingId/v1":"59a94871aac769fc66bd93c84b4718eca127155dce361f6e18a792f26d59395c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParam.vb"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"15dee9e86c4128a6353437c18c48c9b6eca13298beedfc3dc275fbda86a86828"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"efd493ef2f7b4affa759a84915772605c01572ee410d6e6b1c863b6d4e39c9cb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f7d6097830f9d5becf1efc7a978c48e97db4cea94f4b2ce73906f8e60b0ebae"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"14d4f1585662eeb7c9e99edcdc3e574263fdba7fdcdf6b598c863a7dfffea294"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsSharedParameters.vb"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c9ff981a7acbb6c19afe28295b2879555f7b39633f80f01cb5899bb312ff646"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd77c553c630b8faf45a1d1bf9e3749f529eb39c2f040af7cf727c0651e62f8b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"c94036170ddd5c3d16332bdfb0fb975a031b26f4b25c9853b27d883dd2ed3c5f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"f841b009d61a3196be0fdd763b6417427acf5e0501cade8205d79201cf256dbc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e75cdd48eb00051dc13ac2bd0fcc6c1ed310d017cd50954699ac7a5c3792353"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea8e33c21cd766c95b939f9314882e50908f0c37d3f8e43ec550cea78f33a2cd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"79057fd376dc5c42e1fad540dd9372ba6642dbb81b596f1265000c6650b204c5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a0ee40a4ac7ea6ad88499304befb8bb53fd5a127f2def71d18bb47ee04f1c89"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"55272ccd0b4db5ff24a43d2b4f9e7703fee68ae0e49d78481168e3e42000036a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"e250041601651edf48f448d780fcd17aeedaa44d0f35abdfae6b933a9a1c1f9d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"9926a84975ee1b23f779f52c48e26afd87fbe984e8c1cc482c2d916cc1399779"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"49ca88e572746adbd76250112946d3792dfc68da867494886cd9496a4007604f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad6ab32a8c8ce0caf903e109f0f585b2a8683e732d079bb729f5dfb70f8775ed"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca8b843547c7be3a689a1d4c080917950b78c88c34c703c9a69c4ed92da8df28"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e2fb6c35539bd5cc9cf6480d55871fa5ea23b59fe81957ddb4372e1a8c89a10"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsTagInstance.vb"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"adacd5694d459dce5175b62b21198920ec51b7bb1639fc96317219dbd9516108"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"b435713141867fc159a7af83a74f98191ad2ed005715c4a7e3a2471b17914c9b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"84f61c1eb4a6b5b1ae8c3f995892818e2df269b1bdf9abb4de79c1c92e78a451"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef354e6a9e7cb3f85d9ead247fdf5b181e6b9fecc86e7c5671a0a6713926ba2d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd87771b34c02657182c9da6b7149303aa45ed0f958f21509406572e8b0141ee"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"8952877551be4b0baf47facbf53505d2b8a08ec909bba811417adad7fca80f61"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsVP.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"fade346bbba7f0202b1a7bd131d72d97fffcfd3ef32b0ca21982c5c297d9e9b3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"c05c9afc848e99064eaaef3a48513f0b23a8aa0c6a2eeb9ada63c10c58af37b4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"a428e2da5e070ee061381e3fa0c56c5586f0dc3c5e79920b33fd26df7e179fd5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"c42ddfa7c2f12249e74cefa0925d57b143f88d0782b883dd55563f7dda84b781"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Data/clsViews.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"87d27cf95b3272ae65a45f796c26cea14ffdb02b3500787f1d0cb2b622c50ca2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"94359147ee1a962501cd657d7169406c30ad8b987351333c64ff122dcf388a3a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"4814307ae29bc8392cc83fd1a90885f6c23c79d1400876b37feac49d81f5468e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"b25bdb4e670540c55075b47448a0a2c67cdb4a125646ea8f2d1bae749a99c3bc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"c66f0b04b24fc23d28625f2760c6ea0be9af5af7611e9c5e23f7643e2ed6e1a2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"22f2f48c15f6160227dde1e188e341fa6cf1f446af868fad61d6b4f4b9d96041"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"13ffa4deca760b12fe14e2232781d03d4adcd405e1a971fffc7655e8891a4096"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e34768469f2cf922d926d7b145763c611554c91cc1e87bdfa97942c1252f33f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2512.vb"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"d01545cf3f35f930b532df3f4f24bdfdc0c1d0b2fd6cf8f43b190e2bb4d04087"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"9403e99f0254cd56b581105c131b7cfc7b5a3f3bd9f9b98a128c09a941d43aac"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b59b4f5f0ba0d73d0d98d4bdf7d637e6ced12065047a0617eee6058a462fe36"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"1dfdb4be15549ff2d9171b1a822961dfc7e743f8917933feae63105b2566da6a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"f10e621f37fc20b366c37b438141852bb77694f84522db45fae3a73ff2aa68be"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"b96c791a3ee38386e3010f6b4add76521f4e4a62f48e915eca552a7b4360e666"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a5b873a5f1e9f7ff89ddaff8829c524e1c5e0ebaa8f424152740168d3e2c16e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2513.vb"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb08c33faf1729568335d0ed6d124a9d311f43d5ba89ce5eae34f2da3186dbb1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2514.vb"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb74a290ef781ed9686072abd48a7cddc7a7b3c7705adc5d13f551e4f1f2af18"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/Entry/D9B42C3FEA6F4F9E8E1B62E993AA2514.vb"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f7421762819cc9deeefa29bab4197f57a32a2bbedabe6dd54f92dd0e1629d60"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_AddFamily.vb"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"91160e1cf647e9b52fccd54626e55e9e8135b0e73ea036bf17f7c22a9ed3e31b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_AddFamily.vb"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"456c87bfea1aa86f6cd1012b4dfb00a40a3f1a7c69d6fe1e4a67c1343017d607"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7ed1a6ae290ed98644d0e8ad9845a511e1bdf06e33ec0eba4f0afdafec45d33"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f1fadda88f588218120ee23744092e6aa88a6d3ec7b0113cca85d17e8428025"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"6422e3b4eb40ba9cc98fdfa4fd87b5534ae86f75406f8c853fce4430ff084f53"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa1bb2fa303b7e5271af50ca93de2f35ac148f9280d574644b8c09d9a1d98f4b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"e535d1ad79b1c0d095912e9905e5f1dd053f76fc5c167b53a629e286a9989d79"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cc1579282a4306fbd282953fd1c74b82fdf8178f1c6ec2fbdfb794e86d9a659"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4ea2e610f39cba8331e956b83c383319765438cad9e1c46c152cbfc42dd6644"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"0290f8848d32c7ed8e331cc69d63f4b3fa2b1a2b9d511a76817de0e04e465936"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"313ef2b516b41496e4620f618923e763fc89752a0af9916f4b6721e9c017f075"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"656e5c69df8ce7a6895c6bb9a0d4b56c90fff822c186f06462da77054f9ea18b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c48671a2170aec41da8e3f2433f7c83a70fae138fa372ebd7b06f112b9eeff1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb03bcd455a3bdef8df292538c6d54e591fdec2326aa0a0f8663f77a12e31c07"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":613}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b17923db98087609384481c4512d18f21675f5fdc8669bfc27defb1d232a0e7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":674}}}],"partialFingerprints":{"codehealthFindingId/v1":"d52253ea6fce99dfca0383170145ec17ad7744791c1ab34ce17ca9782d4e02ea"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":690}}}],"partialFingerprints":{"codehealthFindingId/v1":"f16e37619371123cb0e4eb4a7abfb6023ffb7b799086ab2dc21d75bd58ef7c47"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":709}}}],"partialFingerprints":{"codehealthFindingId/v1":"d00878e653df77c04c344092f721a7339a7085a542733f44bc659d8249bacfc6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":721}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0e0b17214a228c826cc3f208dd5fe659a24f0dc65c1a6e9a9d6eb2dff694e9c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Config.vb"},"region":{"startLine":733}}}],"partialFingerprints":{"codehealthFindingId/v1":"abd17b832fc0eac57e076e9bd5ee4b0bad18a9d3d9bf9c6fff6f841e5faad3bf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3813bc87120754909f6c7b9ee9d2967e8097d603887504f9ad042e53690088c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8c6288687da4d57da771dad22735265ae01dc7fd56cedf71a165907701a0cee"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"12328e87bd7fb5d395f126c05305a296f2d2fac713f0f9db8743541ab712cedf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"e62b6f2b14be1af71a5491bb28651bb0b3295e4d990d709d72fae97279fdadaa"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3829faf20be976af8e31f9af92c4667e0cd732804f16aabcd2378afc1ce4f6c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f6e37520f7f48f84bcacafb4e782da4d9281c8e0fa3af0a3275105b36ff7bc6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"71ba143dc0357f5b0914c02fb2b802243dba0cb49b15bc44cb2dcd272fc373bc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"37d7776212adcbbea9ec54665081bc39fcec0eb57c94f862d72f234e43493099"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"2637b37370521f6d79d08282ee7ef45b0d240431a50df322d54852496148c93c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"add05aa739b9eff10dd0ab6c3d6cdcc7981ce338a086bcfa2119ade9ca45af36"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e7209c3cfe44f73c061018c4fcabbefc2b0c8f04cef719f04b0c321cca52cf8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":354}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdaaa72b3d3cdcbba0b5df4ccdea9e9639c2302d16cfbaf9855a2ad5757e1126"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ea317dbf06381a5c010776c380e76c9c961af92d4320fc6005ffedc63ecabb6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":380}}}],"partialFingerprints":{"codehealthFindingId/v1":"f549646b1392f7401a93d97f44b48db3fd519f43b72179def956949870e9e863"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":402}}}],"partialFingerprints":{"codehealthFindingId/v1":"413f23b4f09b1210dfc8f93edddb3a13e4c4f2abed07f8501bc7faad33dd5ceb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":430}}}],"partialFingerprints":{"codehealthFindingId/v1":"3884663771c1d9a2faaae74ec423fc1eda0debfa92149a65e99e3cf50495e043"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":438}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb1e24f391517e4591d51da47c068ee295cede59d6b11215734291f8a1f17320"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":458}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1e598ee5e22eb4575ef55f3d55caa3f8d672d3d845898c42b489172427cd952"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Find.vb"},"region":{"startLine":464}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9d9eafa1d0678e9f9d61fefcacba49b044fea70121c943bb92e336bbd9fee1d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"261c90b411237dc91732e85199e9e8109b7467dfd77e84a1401977ae1885f750"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"570dfdf277e0952b820acbdead9d2144bf4384311bf32e6736a4a772ff1bf6e7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bc8bfccbf5f02c2a9e286ef53770d990c75cd6dd02e5053089a8d3839301799"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"83827204defceb54531271999f1f4f2437ed1a1ee5b749856eceff7c65daadb6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_ModifyViewReference.vb"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"019df50f1c91e92f166908aeea086e3d1b0cb229bfa4324d5f460019f635a305"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Progress.vb"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"3154a9311a303d1f778e954204dfb767b88b08b4278ee1e6dc6d774efbbe6f96"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"05b3310c0197295f8d134331af320406f5d69c0c371ffa4a4bd66935dcd21020"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"96b0b2cca647e6eec429e67e5feac8a65cd3e1a1c27ad81a015bc91eb856e667"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewSync/Case.Subs.ViewSync/UI/form_Tag.vb"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa5b9ac9595f782ac1f22f336d50657181327adfdedc7e9ace37bef8e292ffd4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSettings.vb"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"334ecf71343ae2f009682e337933d4a903a901095145b783b80a82385fc8ebf7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSettings.vb"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"82444dc2f1212416e9161178fbac60418b52d547f7b514a4b3f9d07a76995545"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsSettings.vb"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"e931c80b788dadc8bf8e52f1e66c40267715a0e56a8b63ae0ade5f3fc5c8907b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViewTemplates.vb"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"f63fbc4b11972bed22360f9f9460ab1a9b73738f67f7d18856d96bd1e175fc9c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViewTemplates.vb"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6a4c74166c0e2a8f82a5c28242066b414137e528843ef286c862915653f4e53"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViewTemplates.vb"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"29b6bc403f968891f5ca2b93e9c9b4aacb9ba69671f8f4f34eed72805d8d2cc4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"031f9d70440d54b321b6fc6ae19ec126d00982b0313cd275f759f004cd126aca"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"547f7b466733696a19825745cc14d9e10958bd28f2ad19f845dbbe4718800721"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"abf1392b05e406cb24a9517c6c71af25e3f475378b67629346f45505948bf4f2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"80b80a69ca9e080ee3d31481b4b7c50d3689233ad9dd072c19f5b286871442dc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"d22ed1a89cfd24316cb6bfe07059a88d5c5598eea161c30503344461fd00bdff"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"884d723fc78ca16b9c29dd851b6b5bc36446fc55ddf7df97f31626da866cf0f8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"60844aebf48bb43411b746fcf91ed271304b0997faa89e9fc5ed04f53ee781a3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccf4918176299b38ba86c015654e2c6addc121d0fe8c9108463c5b928e519401"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4220075bf5c02fe5c903adbfb2d92bed74cdebf2459cadc66d18624baef47be"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"e10f3cb774094092eba101013760c8f0aa7dc1537b544e8c983a005cfa64c56f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"369ca8e7be5952fc07cddeaa732ccfcbfa7283466279a006df58ff9c2fe0233a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f7e0b50e545f9f4a57f3cd0dfd097b03df560b05fb4734f19b515aa71a89f44"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"0be025cd2dc372cbe628ab3b09f120fff67b45c3e4ddba3688c55a3373898ca1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6f7bfc6bd72b3492e02355fb1ee53f377b0a5103f8f56971cfc8d0ed94d2280"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a1b135f348fd00c8e90352c09481912afcd26ed2fe8c17630c3ddd3f616a8ef"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea6e3a4f5ffb9ffcb86ff7381cdcd12850bee5e99f1d959cda8ac0819f78dd48"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.ViewTemplates/Case.Subs.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":691}}}],"partialFingerprints":{"codehealthFindingId/v1":"d200eff5639d5bbb5f2dd999c4f60eb904435cb66d0dcddd56ecd89d26959459"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"03e51ecb1f7ef5d6746fe6e6223dc23cd38eecf5d7bd455e07c58b296131a4ff"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fc42acc44178e15d8072009cb12db2c23640060d0ede92aed9b6e56901c6b08"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/Charts/clsModCharts.vb"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d6596789c02e3897d98411a2a876df7f2eb8f96142225a27164a4def407ea5e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"139f196039b817d1442e470a9518ba5061e03e16fbc10c04c461472fe18e032e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"db49603d4e300c072f6cad41489d984633a1832c7feecab98f8cbe565fffc1c1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"9eaa5b2afdfa5292b12e8a3f94c61bbc737dbb21e9b718244be2e61bc554cede"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"c84fd330bd16a026e1c9962f98bef52fcb40f0dff7766906834f49e3924151e3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"7be329b0b4a7ee9fd85d3e940d7e3817a3d98b9d1d02c16bf9e647c68fcb4c54"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemInst.vb"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff941d1e5ed6760a718b5a083db2ba9f0af9a03d755e873fec50568d4b55c3c5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemType.vb"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0d4eddf47e2d7941d63b76d57c28c36687bc05360dc26b9d5d0feb2e77b45ba"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemType.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9777d87f4b3fa09ecdf321353c92860e04d7e8959c027eec57dabd26b23ab74"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemType.vb"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"19c1c8956d2373f665cd53306b60ee9c99002d0e300cbf6d6ea502aba51f3af8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemType.vb"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"4812c8ace516a0dce3b0435ab807ec8535c7908a6e29819efe7e6506a9159a18"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtElemType.vb"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"73d16ea12010c61be5491193439040cc8ed038410f04698af3d2342f671ece17"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsRvtWorksets.vb"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"43652b6cd49d577108a06266cebee766ee1c7d1e8775c96424b7ec6bd90aa098"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"f984bbe47cff8cd53a234895678fb2d402a43903254cd278ea84aa32dccc91fe"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c2213ef7ec83f0abac963f18ff1517810df0382ec933b9dd11837107ff9e20b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"85d59c38f509fb07fd0f7b044e6567f411058d127809a817409916a42f1999e9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"28600844450bc59deb1718b3c1116b92cf172ac93f1e74d25f77e6f1ca93ccf7"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0b10b4704fb0a11ce1ff5a043cf7eb5f3d0462b47f8471278fffe99497ea3c8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"e33cbe470e0463e199c23b65cb54a74cb3f4dbc643e242608f74c9f46616c4a0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"0989e7803201cbfed61bd35c01fa8dd1917379f58dd93176b109f927745f7554"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f5ed512661ca424cf59b413123488990c4547375dc4bbad9308e8693f8381a2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a645a35d879e718e26aef85f01123a4caec7648baf4195fb743278ec9b7dc43"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/Data/clsSettings.vb"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"80f23eaca6cc18b9fc30f88718817ae75a966cacb7ea0e42fd988394b81aeb9b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"18ac741c34d0f2c6b448b7c16be0d6c0b450d924d3e1f3960768fea7ea29a029"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"15cf6751ec5a47c6172865842ce53913b52bd07920110689e7347886566df52c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e4b9f81f7db6a1b7323e9d0a2a0397e5db59df233f245a373cacd854a3bc28e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"1673b1965ee18ce0e77095fa0ec41c3efbfd6cb2e019b43af9347197202503ed"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"383f8ee27a3a75026c2db69baeee238687cdb7a44adfa465fd8c48a2e4ac82af"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"9040bc4fb11c33daae6d1fc9cafee855d676967120fefefcf96d918394dbb151"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"25507e8f30226522c4473391b944a0462993c792b66fd6ec686755815a163fd6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"f857a145a2c1608d86da516b8843e3e905b813cfc60016f6f0508f0391de0366"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0805821c92663beb2a5fef4a216b6516520bac025b566bf972a35d1c49cedb3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e39f54fe7005f865e034a66eaafbc1e621138903151540631eb68291d355301"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"090bc845ade5cbc7e4fc0c33ccf0c1e84883cd25d66b06d4c2d681fad87bb71f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"fca69b8fb0f2e72c5175ce464288cd367d72f0e89a0e724cf60931c7dff9b355"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"61c2dffad7b03014a8e80dbfd00e07ef823487000f3ff1b88a0c930baf5b16bf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"9354ddf4fb1b4aa9e929dd75b695f35bfe648574c40ed8478c49d2e01e7a98b1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1bf37866a3c963048108d2036d200fedc310ade06244ca44f89f8c0ab1317df"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"db6a90f8bb84638aa0e5e59e283b9c921983031c80277801d180c7baa67f3f49"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f52f80b238af01e75b7fbd322ce24329d66869a83a7fd28387a95323fdc1e14"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":376}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f9e6a8bebc035c95d381e02f3ff889a4b890c017577b659fbff98990c1e8761"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab4ef914b4861146bd60267971bb9d9eeb7e56aef4d47f0fee159de87bd47c9b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":416}}}],"partialFingerprints":{"codehealthFindingId/v1":"35f5514792e1051eec61e0bd3baffa13fdb463bd96661849736ca4c7b90da65f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":440}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a5648bbc0c89cb198b4080b662094c111175949362967fe616612026a9eab52"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":480}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a6e3bba84b87d27385633921c94acfae095f54772c585f282fe579ebb4df277"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":485}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b690eeb95771348024f2281030be72b6c7e9b1168e64f76eb52d0ae9b8392b4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":509}}}],"partialFingerprints":{"codehealthFindingId/v1":"880e7d46d92509f5f82c77f3ca55b0700e2ee54e4c2bd1a7515396103e440945"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"be3a8a0b91d74092ead8e3a612a2e0107154725c9277717a7b22dc4305e10b99"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c73fda9c81898d38addcc5fd8f3c8b238079f945d628b942fbf70d173a9695d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":597}}}],"partialFingerprints":{"codehealthFindingId/v1":"57cc04a9a5a6627c43147a4ec74dc923c734aff16a2f657ec7172cde01a816e9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":623}}}],"partialFingerprints":{"codehealthFindingId/v1":"c49480646177c0331d911e3d9d822a21fb1b565e7f4e382d16519bdace311456"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Data.vb"},"region":{"startLine":684}}}],"partialFingerprints":{"codehealthFindingId/v1":"58297c8b322535324edc578fe883447911d7cf9a0541a5d6ed5be9ee16729698"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Worksets/Case.Subs.Worksets/UI/form_Progress.vb"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a96726bd0c05b5d71937f293c624f1bb9e772fe1e4fc7823cc92c07d42d7998"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"3540ccfc4733dde5f5a14986118ff55e270dc2aa5eb63237248017459f97fde1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"e97f2e494f0bfe7de9cd95d0205ad806b0c719309d80708bc834ad5ddc25c64d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsConfiguration.vb"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"a104cd7430f8eff55e279de247bd9fa3ed1b9f8711d0f9389b4d4a790f12c0c4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"f219500cf966e0a48c74bf1f21154bb046005f11ea17725044daea8beccecff5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"94625869dadf131d310d4036a49a802a2cbe22264970829811d8143d820a1ce2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0431c2d5480e1cfa90e01f59e3c6c1b9edeb65d76b98d2b06785a95d1f32a3f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"43ab22ac79ba5b705370711ecf8981122424c99750cad5795e137d858ec69f02"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"b782d4ddafc25681797629c84cb9e8016ed5a231d5e95ccd59abed91b3c09947"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"c383fcf7651d7332a4f41c29749074e1e9791414c7dfe348ceb17279102cce7e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"1566ed9bc1d0ef73af68f86bb98b600e68bb444300406d7f3febea14f9193aac"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"883d6e9410a5776131c5c7b0acd1d39fd2916704142a4e6db845460e887cd241"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"b623a3ab772228d4bd2d266acf214d7c6578c252484b87178c6cf19011ee48a2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"af9f073242c8def1ca678f8bfb3735dbec5f20fa6f85b5531f9735d4bcf7fa29"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"316edb7b70ee139d8957fc0307135c9c417d35c2dfb1d2a1a7c523f34727bcf5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f5113f2e65138bc71a3c7e7a8344f4ede5f81199198e22d31f19c8bd55403d4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":367}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ae6d2c76ad4f8e49415b24803c21ffe35c5905720e9e2271293296287842110"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"baba17ae4c9eec5fe0f4f3f086e71bc327157e3a14c6261f937b15347822fe19"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsExcel.vb"},"region":{"startLine":400}}}],"partialFingerprints":{"codehealthFindingId/v1":"2373eaafdc93e49c44962c0c4fc9d7dd87c7920ec308a22935daa2e92e8aa8e8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFamily.vb"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"234b4272bd855026b5531b45d1a74b061a9e69c35113bc77e3c931206eb1af93"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsFamily.vb"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"43c1332e0c7999d5e76cbc79b6cf3fda82568db2ee0aba1e48a1ca333d9382a6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"9206ef39862d76fa9320efa5692cef9747956f6b8862d2491780217c84afef16"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"326110af739cbb7ea00b7e242557f9ba30c6988131bfce266f3ef43b72eb52e2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsPara.vb"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"627e21fffa4c78789c349c2baa29dd0f34471737894b77a028957c5265d750e4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"117fb7203da870d710468a423d528a964a0985b487209ea4eb8c35bbf2fb81d4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"1234fc3174e7fc9d15c7f8a3d7fa5846121f3ccce108b9831d5922336e394ecc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"10ec79d4980079e8291610bd149579e0640b1e8dad875716b9e7ebb267aeea4a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"897a147ba55b9492485db54b39d0b964783222f96e8a099208d326309caa49cf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"72c15ca1b213fb269e8d262bf6b1cf0afecf85ad9d6e8bb47bf9d447ae91e6b2"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"a566261b02cd5ce089db20cff0005ec2cfbfeb5b1785d9bc8a0e798bf4c4674e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"5741581e4ef3ec807bc2e2a27010010007696987769770f351185223ec1b8984"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b5b8d9e8ecdb80e4b20f55b5670c4657bf64846d2200bfa723918873dfbe690"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"e53002299a1c2aea036b133193a6441ebf30caaaea0d420a51987150510d37a5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"144c43781d48da03f47f96c9cc35b4f561f1c3ab8a71a382d47efdee0756d9d6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"68c0155d456c5366a69749ce38e5c6c96d447317189166f5fe1d40af987258a4"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"96571b7d0c311bc7b230b944b02796b7bfdb0427b5b95aa2e08557710c70b2c0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"f96b8fddd54fbdea2ed37b413c4d1220183570e139e4fb78705ead48c42852c3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"90ab6615e9d920f2f250962aa56e1ae8f269f1426e5e7bc6ab416339af839d0f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4e2fd0aee0f4a4b8c223d815c84f512acea6e1ab96930297781ae1811c843ab"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"7482086a2bc9f813c89351ab8508b5e0f4d5e847b47e582375e13d7290b81e00"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5e88d644962ac0f22588e8e9aa6decd44bd2258c1951ab23c2391d742754d26"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsReportingData.vb"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4d1cd54ed3c4b5b3d377f52cacb27a4d3c0991d5f4281cc3877d81b95ffecc6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"401065db90fb5d9d499989926337acd20631bf7e0c6636b0ffb1f271eac0ab9d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"980d2df7bc44b263461675735564ba8ea45614de673376c49063b1034e1f024c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0ef7c6c7643e55572d5f79ac2f9153b3e2a87c4bce02f15a5acd3470934887c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5c0d5039dbe6ef629b113ec182eb40ae0b249a639a24bbf5d931595c46c4b9c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":338}}}],"partialFingerprints":{"codehealthFindingId/v1":"4df192aeaee0cad310976601503351abbdf2ea0a7a2c8322fd47f920785ab406"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2b4b4fc4834f28ec3d31dcfaa2d6824ceb9d41603a716bdad7cea60fa75dceb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8439ad328aa1b0ec3255ea6d1da1ca8ae58a66db922cc2bd861d8ed18f8cd82"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":373}}}],"partialFingerprints":{"codehealthFindingId/v1":"c06e4d87eba53e379ea35e50a2dd23cdb841bad927aa85a5645e7c82f0ed367b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsSettings.vb"},"region":{"startLine":396}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6ffbffab72ccb6185c204d4a1d544c01bb3e0a63fdca7fddd0e036562bebe3c"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsView.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"20297581144efa9697b592a799d8aea56b99cdbdbc165cc8c791c37214b4c6cd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsView.vb"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a51b877a8aa9c11106ebe73329941607d995059e1b308fbd692b7bfe933364e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/Classes/clsView.vb"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d75e30caae1bd7a275a2d9d55bfac5d725f004aab7a6539429cfaf307403e51"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"61c239e84b5f6f82d58e6882ac3ddd9aca5c2883708820ccbc7b21afc000fc2e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_DataManager.xaml.vb"},"region":{"startLine":501}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9a04829bee7eb48ddf1c7c577f032337c45108477a237a8c327fdbbb4f5a9c9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"f257ebc919b56456963421053acb0c864747f3eab67528effa048413e3715ab9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b88698459c97eca7d2af94ba6c16828bd70c393b0c0afb1c4f890779d355652"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"5332eae315692bee1e2c332609d522a8dfe0fcc3eeb9d74ab8e1595aebf16fcb"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad503b8617d8e85d0e6b150f030d6f7f68ed34ad2066bf8caa23899dedec3e95"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"48cdf37ec6cde30a79e7c94678bb8377c4713bd766ce3230566508990b1f9de1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e37a6d5d7892131afaaf96efdda4501bedf0dbe79b0c8fe6e1ac18593b7bd5b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"64874f9000e1488eb236a4b0646e969420046e9a263adac200513a15f1e773a1"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecdbe7627545d4a1dd105d16a6bc665284a11a045a4ffc066afeeb9262b2ab42"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dc2eb6d798d11f65aa45854af0d43c321fd81986fe30ed7e22b03581a742d8f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":428}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc564b490b48ecfebd2bc780a080c0eeaf73c3d11a225cff172b94d3165de0a0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ExportPoints.xaml.vb"},"region":{"startLine":584}}}],"partialFingerprints":{"codehealthFindingId/v1":"19c2490d14ee97f8bb79a2e7f8d5add893727c070edde8293f9d4e5a18236e83"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ItemSelection.xaml.vb"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"8953788425c0c07811178a87b4dd1fb346927edb3a5ccb1e16c9a6a8a25052a8"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7900730d5c47e43afdc764142530a88c373e130c6faa9b624f6d9a5cab7a867"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e67214511ffcc4cc9695c18255b4fb558621c8b0350b586c1475970468570fd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"36d9e5044f425e555b8f796a1ae959caf0d07ecffaab8abe8f81bf82ed6d0721"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e5d0567110ab740b74d6bb520bc44f01c261383c707f6db8149bae02f90042b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"56f3e268030443b18e1dfbae2101a0d470f0ca0078a35c16d0cd05e597ac0980"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f71f8ec21d3933421477511c2af802d34ca653fa430c02974311ca0499597bf"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbf13f501b79bae19f6ea09f3c48850730211960d01aae166962533e0b4a2aef"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"058ad3819138c0907188b7a11d0f1cff4602f8175ca6a655206a67089e3ced14"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fc278526e535a1c03d98b3b9d791d771e1e3c36c33e989c07f678ce1469d03a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddecbefc316e0cabf4213b36f339b04729aea83fd7d9a4db430b960e3e9385b6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ce1e933aa1fc11443901cdcf0c9814e6a8f3bc0fb55ea39c1c7c7e45f211530"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ed21fbcf8923dc9e28d890db2a0938f578189935cb2ea93d37239ab56c62e40"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea88e93a4486ba8873b6bac505b16448b95d3f867d8f650e4b4120c32ef7c2a5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"8db0204102057097e6fad1a81ccb2f12de3b309ad60fa5e3ea991eca7107839d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_ParameterConfigurationManager.xaml.vb"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"76c9c70ded079c01982a6c57d26b776aab9a8d3ab9859fda46e90c68ba2815c3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"2171642e416245dc908d3f2ec10018376c57dbd843d6dbf57b6c0fa85ae6924a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePoint.xaml.vb"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ddcd23beb7b2e48109c947d5e064e27c683ef955a6a82d1be01c205883b21b0"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f43c415fba5c3bf84984aec99464c6754ff6bd16060001068c09908a133c6d3"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fb55a6f308aa5a5f5a066261acb2305299a5cfeefbd653ec517dc873ccdd450"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7a6cea8860e7c5a40bc2706acc8630ea69527e679d4076d68604a7b5d943313"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"71a4b29a23425c48bdc85e9d608bc3f4952737b0d8cf4de194c1b5b0c575964f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"2eeff963a48d11767637236528064ae08cb58963a49f3e3fed44fe4ab95f6bd9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f86c58972c8ff4470862d382c45517fc082efd6d5db025be3e04d43447ff6a5"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"c55fcd87553deccd4e66c880812e0bce760c94734d0a088b0a9f46ed08ffb0dc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"66e9a45e16ea3a50db17adf0382b6330042137b9414c119cb6eda4476aed9fff"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5156c625508b9af2b8d4608fba0d20ee358e850376bc974f6c3209a502fce5e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc5c6635fc0cd98291fd7a1a069f0785a5d8428c89636be5ee84894d0b16e74f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab32e4a0fe2cd52241707455ec8e478070ab63752491fdda0c23e7bd8f499c36"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":354}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d706ff959e4533bfbd88744f7e1f32090fcf8e0b8281fa9c50db70c40d83c76"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.Xyz/Case.Subs.Xyz/UI/form_PlacePointsFromFile.xaml.vb"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf45b34bf6747fc78e5450d2d7289d28c4f8e59937e075b5deb5c037af11fa77"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc375ee597c7c7b4e2557de30832fcff46d3bd2ae7ab3a187e62915b7f83ac55"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d60cbfda850fb9392adfd2bfe2fbcd50a5fac295aac3e0114c1230eea2c0078"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"73b55501e1e5a302422813f50c37b0b3643cdfee88a3ccc57a4acfc65deba19a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"e160f97c2c24a05af50a7191a4fa711ebc255e29a319f4539d144d474634bece"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"efff386f43d96a8e45642c1df21d8a76c84bb5550d6ed748a00fda0c5dc5442f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c19c4c7265e5b060f6051fbf856bd835b95d5bbce57288c2c9e2503b1112a8f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebddd500e70f2b1357aee0619289ef11c84be75ba9f4e6108b38efd97d3d2373"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccc36aec4e6687b6f14a1104f41231f020769d5d81d61d4396035c206c4edb3b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c42fd18e5ec9d955f09cfb49fc8f13f57f9e9d796aec875d160e1ce0dc1024d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ViewTemplates/Case.ViewTemplates/Data/clsSettings.vb"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee51dd5ee45464a649ac78f1d49b6c7aad6aefabb362b7987ea9eb4feca3b49e"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ViewTemplates/Case.ViewTemplates/Data/clsViewTemplates.vb"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"66652976c208ef68a2114ddc0c52359a23cdb9e83254dabce8abb1f16a5ba807"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ViewTemplates/Case.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"37ff137e188a9e2a8aae19a09915f5d94021d1ccbbab4965af900dd466ab28da"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ViewTemplates/Case.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b87e9ee43c124d1ed953a6a2e7beee19243bb2e28daea3230c1518916c70316"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ViewTemplates/Case.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"64785edac6a509c7f29dad319f38b32f8668a8fd407123f29ec3f1e1b4e35d5b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ViewTemplates/Case.ViewTemplates/Data/clsViews.vb"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7d561d87978f387b076ffe4566241ecfb81595a95e607a64a8083459bdb6230"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"841d36f5c559ee2771fe4f9e189d8e6a191839033aba337a0a6476cc28977d1f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"b07e4fce60c32533a3cfe538386d10bab0ba2418e369554b9b93064aff05346d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"81a9d562e8be8bcf02343a9e60851b0adebd06add8fce867a55ff0d336263227"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6a9b91f1bb2ecf63491e6be56db61863b6923a1f319bd4b216a45517bafd55f"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cee3bbf2178a74dfd77de3e2f526437d84e2de605ce74e869b05991dcf403dc"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ViewTemplates/Case.ViewTemplates/UI/form_Main.vb"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5914810cae7172e56a33b820dc74b38395f447c3801fcb0f33bcebb9c6889bd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2017/Entry/AppMain.vb"},"region":{"startLine":364}}}],"partialFingerprints":{"codehealthFindingId/v1":"645cf416904b1919a363f69bd458e2f618b2777e876d21078af5d21220ce4953"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2017/Entry/AppMain.vb"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d314c6f557d144e4c16f196279a75d45c8201775340a34d7d723894e4c6ffa9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2017/Entry/AppMain.vb"},"region":{"startLine":597}}}],"partialFingerprints":{"codehealthFindingId/v1":"20507adebfe84e86c5990b75ae70e98790c9e7aab3d6e640ce958be431a2d092"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2017/Utility/modUtility.vb"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"837eb0194e94304e8096398fa405a1e80f7a6dc734d2f5bfc45abca1d3a3023b"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2017/Utility/modUtility.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a69b8719b695b01a4e45c00f911f4a6bd7d5145d12219210d67cc069b954cdd"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2018/Entry/AppMain.vb"},"region":{"startLine":364}}}],"partialFingerprints":{"codehealthFindingId/v1":"6246bd4ca5edab9cb93a9fb98b23d4fb77fef274d6ea9799d19b5d199f495e40"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2018/Entry/AppMain.vb"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"735181cbc237c963e21616c2ff07162a13ebb7e661e44bb5b16b93c18ea53be6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2018/Entry/AppMain.vb"},"region":{"startLine":597}}}],"partialFingerprints":{"codehealthFindingId/v1":"d188a0ad9477d9020e2074e8432e5308faefa9196f6b5d889626961a19d27143"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2018/Utility/modUtility.vb"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"27a500c7978b619f98d0e8b57e4cc89852d30dd8b8d467987087a51cbd527018"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon.2018/Utility/modUtility.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ea31cd360a10717940968ff13415c5219373475a51b051456e35742e97f58a6"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon/Entry/AppMain.vb"},"region":{"startLine":364}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f512448dffc18381ccd2bff24339985eb112212f1ec8f28e9e1cf89b2ff2e5d"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon/Entry/AppMain.vb"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5461244e7585acf7303c5ec31d713a0f6d5632792ddb9c7bcf089d835e4ba9a"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon/Entry/AppMain.vb"},"region":{"startLine":597}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e7271c9847909f947acd12d12b625f9decfd42aa462c1ac877f7a2e1cda9bb9"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon/Utility/modUtility.vb"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"66408daff287eff1a8c47a3a5bb005912d8c418e5b4e8d3c5d3865c1e9cb5a46"}},{"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. Record it through whatever this codebase already uses to report problems, or let it propagate. Where swallowing one specific failure really is correct \u2014 as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 catch exactly that exception type and write down WHY in a comment on the catch. Both are needed: a comment on a catch-all still swallows every failure nobody anticipated, and a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Case.AppsRibbon/Utility/modUtility.vb"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"84c9210d60333ea9ce0ab3e9b767803b552e89fe11405bd35b5051fc3dba8384"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"a122db0c7bc32361b04a07d9f616862e57eef3e626d382d4d7816ef9f6b476de"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"33bad1ab97e36b82c007adeb3734ca8afabbe1bafdadd80220b7310963e6eb93"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec19f9cb8bf0d3fb8072a5b460677e1feeedf39073a7e51eb63fa51d241550b8"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"58afbe607de000adfeab9286eac08775b606a5921e42e6b9433f162a9bf59d32"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"3413a0ba0cb530f4012ebc9e75a41b053c2f2a7fbc9a8d9bdb9a1928bc510868"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"2855726c89ebc8bd2fe4de0976d511247d4e33354ead27c033d234698557a597"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"e402f40542a1b8c9131a4523a1840bb24b555d2abbac4bf303c81df502e19cf2"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa497aabb8390511827b81df0040853a72d4061875e46af649150359165b8a25"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf9854516e4f2f6657dd792f7f8e5145066f2247ca003dc64827e682d713ce5c"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"607bdf0cdf367df7338faa69dc2f760a2afaa8627429ee374151c7c0dd353f1e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"641fdb8f97db876a21b27de30893cc41581f11d6f9f48c0b8014300f931b77c6"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4bb71fdb38969342cdba083b5bd67500374cc830536c74d57fe466558f2e953"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc5ce31749203341d7121d85fde6490ac908d758bcfded5a65728230f6c37451"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"24976efb255d929d2dabd6d994e3a8b01eac4d2a72433ed65e7e35e5600166a3"}},{"ruleId":"D17","level":"error","message":{"text":"WriteOnlyPrivateField: private Dictionary\u003Cstring, string\u003E _sharedParams \u2014 assigned 1 time(s), read never \u2014 this field is written and never read anywhere its type can be reached from, so the state it keeps answers no question: every assignment to it computes a value that nothing observes, on every instance, for the lifetime of each one. It reads as a flag the code branches on, and nothing branches on it. Delete the field and its assignments \u2014 or, if the value was MEANT to be consulted, the missing read is the defect this row is pointing at, and the branch that should have depended on it is not there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"19d27560457bf39908dd112c6df0f41e60efc6372070525f7e8c02b5c89ff4c5"}},{"ruleId":"D17","level":"error","message":{"text":"WriteOnlyPrivateField: private Dictionary\u003Cstring, string\u003E _sharedParams \u2014 assigned 1 time(s), read never \u2014 this field is written and never read anywhere its type can be reached from, so the state it keeps answers no question: every assignment to it computes a value that nothing observes, on every instance, for the lifetime of each one. It reads as a flag the code branches on, and nothing branches on it. Delete the field and its assignments \u2014 or, if the value was MEANT to be consulted, the missing read is the defect this row is pointing at, and the branch that should have depended on it is not there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"57efb775794e7ee63aff24720bf6dcddc48c318b782a186df516b51ed988d652"}},{"ruleId":"D17","level":"error","message":{"text":"WriteOnlyPrivateField: private Dictionary\u003Cstring, string\u003E _sharedParams \u2014 assigned 1 time(s), read never \u2014 this field is written and never read anywhere its type can be reached from, so the state it keeps answers no question: every assignment to it computes a value that nothing observes, on every instance, for the lifetime of each one. It reads as a flag the code branches on, and nothing branches on it. Delete the field and its assignments \u2014 or, if the value was MEANT to be consulted, the missing read is the defect this row is pointing at, and the branch that should have depended on it is not there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea57c69efcfbe163c9739c1fb4c5889bbcaac650b9e8b77bc90afaad63750af8"}},{"ruleId":"D17","level":"error","message":{"text":"WriteOnlyPrivateField: private Dictionary\u003Cstring, string\u003E _sharedParams \u2014 assigned 1 time(s), read never \u2014 this field is written and never read anywhere its type can be reached from, so the state it keeps answers no question: every assignment to it computes a value that nothing observes, on every instance, for the lifetime of each one. It reads as a flag the code branches on, and nothing branches on it. Delete the field and its assignments \u2014 or, if the value was MEANT to be consulted, the missing read is the defect this row is pointing at, and the branch that should have depended on it is not there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"690ef9c3311cf748088e7a18a73d0b647930f1e69d520489d08258ca90341914"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 13 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"2eb78046a5821c4c1a62e5eb67c2eff9ed336e0259b2e31e44604e27fba3c84e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 13 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"084d8d7c92cca239253b9f7b290ae0f0ee118114dc864b21a95adb855db0f4ec"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 13 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e623bbe838589275d17df5a334f0424e5bf2ff2241e605c7461675f065bac42"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 13 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd987c089670d5af0cf080f4d282cb0728ef0ca8cb5efd56b482eceeaa27d636"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: add you code below. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1a20e23b1ab5ad3af589ec432ffa0b595645a0b47ddb10eef1763185cacde7e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: add you code below. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c6a1d04e9a8f7c431fa4f42efd8f1ccb7285e783b219f4349767c7ea119781b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: add you code below. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc9e6373624dd0ca7ef88b52527674bb8cf61c0eef640176ac764309fdad8d56"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: add you code below. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce9c5d2ea7dac61315366b0d195ba4361802ff828bc8ce4bc6a9a79f80b745e9"}},{"ruleId":"D17","level":"error","message":{"text":"WriteOnlyPrivateField: private string ButtonIconsFolder \u2014 assigned 1 time(s), read never \u2014 this field is written and never read anywhere its type can be reached from, so the state it keeps answers no question: every assignment to it computes a value that nothing observes, on every instance, for the lifetime of each one. It reads as a flag the code branches on, and nothing branches on it. Delete the field and its assignments \u2014 or, if the value was MEANT to be consulted, the missing read is the defect this row is pointing at, and the branch that should have depended on it is not there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4f70bfb6e661314b03218aeb74588bcc2b8741d70f6468ca470a9ab0e0bd9af"}},{"ruleId":"D17","level":"error","message":{"text":"WriteOnlyPrivateField: private string ButtonIconsFolder \u2014 assigned 1 time(s), read never \u2014 this field is written and never read anywhere its type can be reached from, so the state it keeps answers no question: every assignment to it computes a value that nothing observes, on every instance, for the lifetime of each one. It reads as a flag the code branches on, and nothing branches on it. Delete the field and its assignments \u2014 or, if the value was MEANT to be consulted, the missing read is the defect this row is pointing at, and the branch that should have depended on it is not there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fefb3bd492397dc5ca1570887a7190e4eebb3186573673ccc7318429e312113"}},{"ruleId":"D17","level":"error","message":{"text":"WriteOnlyPrivateField: private string ButtonIconsFolder \u2014 assigned 1 time(s), read never \u2014 this field is written and never read anywhere its type can be reached from, so the state it keeps answers no question: every assignment to it computes a value that nothing observes, on every instance, for the lifetime of each one. It reads as a flag the code branches on, and nothing branches on it. Delete the field and its assignments \u2014 or, if the value was MEANT to be consulted, the missing read is the defect this row is pointing at, and the branch that should have depended on it is not there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed9fdb818afb87e5f801830a998b8d829f3616cbc9eb74f0290d839a78f959b0"}},{"ruleId":"D17","level":"error","message":{"text":"WriteOnlyPrivateField: private string ButtonIconsFolder \u2014 assigned 1 time(s), read never \u2014 this field is written and never read anywhere its type can be reached from, so the state it keeps answers no question: every assignment to it computes a value that nothing observes, on every instance, for the lifetime of each one. It reads as a flag the code branches on, and nothing branches on it. Delete the field and its assignments \u2014 or, if the value was MEANT to be consulted, the missing read is the defect this row is pointing at, and the branch that should have depended on it is not there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"73e0b13e377fb365708a40e0d3547ce5bb0bb41fcb55fa7fac058b488384d4a3"}},{"ruleId":"D18","level":"warning","message":{"text":"Build failed: The target solution did not build cleanly (errors: 4587), which caps Solution Shape at 3/10 \u2014 the most basic shape signal is that it compiles. First errors: BC30002: Type \u0027Document\u0027 is not defined.; BC30002: Type \u0027Category\u0027 is not defined.; BC30002: Type \u0027Element\u0027 is not defined.; BC30002: Type \u0027ElementId\u0027 is not defined.; BC30002: Type \u0027RevitLinkType\u0027 is not defined.."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"24ff41d1fc14d3a19b969001a7e9697d13d34fc0453d84646f56c980eff97f2b"}},{"ruleId":"D18","level":"warning","message":{"text":"Solution references a project that does not exist: \u00602015/Case.Subs.Worksets/Case.Subs.Worksets.sln\u0060 declares 1 project file(s) that are missing from the tree (\u0060Case.Lic.Com/Case.Lic.Com/Case.Lic.Com.vbproj\u0060). A solution-level restore or build fails on a dangling reference, so anyone building the solution rather than an individual project is blocked. Delete the stale entry from the solution, or restore the missing project file."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.Worksets/Case.Subs.Worksets.sln"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"84b7930750d493750c7069be8ed687f84c004d88eee9145baa59030ab45629f5"}},{"ruleId":"D18","level":"warning","message":{"text":"Solution references a project that does not exist: \u00602015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass.sln\u0060 declares 1 project file(s) that are missing from the tree (\u0060Case.Lic/Case.Lic/Case.Lic.vbproj\u0060). A solution-level restore or build fails on a dangling reference, so anyone building the solution rather than an individual project is blocked. Delete the stale entry from the solution, or restore the missing project file."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.RoomsToMass/Case.Subs.RoomsToMass.sln"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a9e4fc970d3d727c4d08d03b099ae19f2239d856283ee14290dddb8c76a6b5d"}},{"ruleId":"D18","level":"warning","message":{"text":"Solution references a project that does not exist: \u00602018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS.sln\u0060 declares 1 project file(s) that are missing from the tree (\u0060Case.Lic.Com/Case.Lic.Com/Case.Lic.Com.vbproj\u0060). A solution-level restore or build fails on a dangling reference, so anyone building the solution rather than an individual project is blocked. Delete the stale entry from the solution, or restore the missing project file."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.OpenNURBS/Case.Subs.OpenNURBS.sln"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"594c2df071a06bacf01e538a892853850b576ae2b5165971edf6d335b4b3b4ec"}},{"ruleId":"D18","level":"warning","message":{"text":"Solution references a project that does not exist: \u00602015/Case.Subs.SharedParameters/Case.Subs.SharedParameters.sln\u0060 declares 1 project file(s) that are missing from the tree (\u0060Case.Lic.vbproj\u0060). A solution-level restore or build fails on a dangling reference, so anyone building the solution rather than an individual project is blocked. Delete the stale entry from the solution, or restore the missing project file."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.SharedParameters/Case.Subs.SharedParameters.sln"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2288432a5e2c2b6430329e84b15c8989a818428f1c99860972bb876353e251fe"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Case.ApplySysOrient: Case.ApplySysOrient: 28 % XML-doc coverage (7/25)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Case.ApplySysOrient.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bc3035c2d978bef34e8e7e0d8a0d4319b9f737ba5564edb3b56bf0d7b27fe27"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Case.ViewCreator: Case.ViewCreator: 45 % XML-doc coverage (9/20)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Case.ViewCreator.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5887f3b52b6c4e74f01ad6e38be927fd4e29e411ae09ef2b78afe4808a7c727"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Case.Subs.KeyMatcher: Case.Subs.KeyMatcher: 45 % XML-doc coverage (9/20)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.KeyMatcher/Case.Subs.KeyMatcher.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac8d937e243411881308b3456f15e15beec6187bf7261a016d5a7e23b16ece75"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Case.DimensionOverrides: Case.DimensionOverrides: 35 % XML-doc coverage (6/17)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DimensionOverrides/Case.DimensionOverrides/Case.DimensionOverrides.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ce67b93441fa53f9a0d68ff12e6a4cf15a7c8aa9e30ca8e128ad315a60ed21e"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Case.ApplySysOrient: Case.ApplySysOrient: 28 % XML-doc coverage (7/25)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/Case.ApplySysOrient.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"46f4e175527a9f02fdcaac08e8a282d3a92765b4df26066a6a618cb6d9cbad31"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Case.ViewCreator: Case.ViewCreator: 45 % XML-doc coverage (9/20)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewCreator/Case.ViewCreator/Case.ViewCreator.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab8b21c6fe62222425ef0c23b2bf2e0f5613c8a67ab95b1b042976939db8d526"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Case.Subs.KeyMatcher: Case.Subs.KeyMatcher: 45 % XML-doc coverage (9/20)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.KeyMatcher/Case.Subs.KeyMatcher.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"76885d7ce37dcaf3d2e47f1d73ae20cf3f1e192fc9859378d4d41d6e7daafbd8"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Case.DimensionOverrides: Case.DimensionOverrides: 35 % XML-doc coverage (6/17)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DimensionOverrides/Case.DimensionOverrides/Case.DimensionOverrides.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff65a009517f1c3d96b05096bf6980d2192456811a8c672abc820c4159341193"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Case.ApplySysOrient: Case.ApplySysOrient: 28 % XML-doc coverage (7/25)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/Case.ApplySysOrient.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1365c5e7071222ac4baadbc9390577e8349e9e7ca5c702189f92f7ef906ca205"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Case.ViewCreator: Case.ViewCreator: 45 % XML-doc coverage (9/20)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewCreator/Case.ViewCreator/Case.ViewCreator.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"393cd6d6bab200a963dda3515f3cdc148d9ad518533aa302b51d19ca423ee71c"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Case.Subs.KeyMatcher: Case.Subs.KeyMatcher: 45 % XML-doc coverage (9/20)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.KeyMatcher/Case.Subs.KeyMatcher.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"67e5ef1717cb2fb3fb4163af8f5deb3acf3d904d994a50527c16200b3d05403a"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Case.DimensionOverrides: Case.DimensionOverrides: 35 % XML-doc coverage (6/17)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DimensionOverrides/Case.DimensionOverrides/Case.DimensionOverrides.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6145b01c8bf4f6612a5948fc3b1347587de9bb904ae381981f75aaca3df80247"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Case.ApplySysOrient: Case.ApplySysOrient: 28 % XML-doc coverage (7/25)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/Case.ApplySysOrient.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0654f170f40f669482c3503b1e81b87b19e4b80fe13c27128b89e4e698f6898f"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Case.ViewCreator: Case.ViewCreator: 42 % XML-doc coverage (8/19)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ViewCreator/Case.ViewCreator/Case.ViewCreator.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5afa2bac6df7e0feb669f93d694fa9a8df6b15749580aa56d81f8b9f606ae64"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Case.Subs.KeyMatcher: Case.Subs.KeyMatcher: 45 % XML-doc coverage (9/20)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.KeyMatcher/Case.Subs.KeyMatcher.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"84607d4ec1957e1f5880e3cb96d1fc80ea3ceebed60fb34ebf1388adc6707ee6"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Case.DimensionOverrides: Case.DimensionOverrides: 31 % XML-doc coverage (5/16)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.DimensionOverrides/Case.DimensionOverrides/Case.DimensionOverrides.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"485020e89b9bb14cf2612b99c4fd8b733554d03f96187d29670b597cf8876b08"}},{"ruleId":"D21","level":"note","message":{"text":"Typo in method name: \u0027ChechHidden\u0027 appears to be a misspelling of \u0027CheckHidden\u0027. While \u0027ShowMessage\u0027 is a different concept, the presence of a clear typo (\u0027Chech\u0027) alongside correctly spelled verbs in similar contexts (e.g., \u0027ShowMessage\u0027, \u0027GetOriginalAngles\u0027) indicates a lack of consistency in spelling correctness within the codebase.: Rename \u0027ChechHidden\u0027 to \u0027CheckHidden\u0027. (symbols: Method: private bool CASE.Navis2BCF.Navis2JiraWin.ChechHidden(ModelItemEnumerableCollection), Method: internal bool Case.ApplySysOrient.Data.Util.ShowMessage())"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"85d62dff1676213d84a3f066365e14211c00f9d33a3c4de1fc9976695e2a3208"}},{"ruleId":"D21","level":"note","message":{"text":"Inconsistent naming for local settings fields across different form classes. While \u0027_s\u0027 is a common abbreviation, the codebase also uses more descriptive names like \u0027_cmd\u0027 for command data and \u0027defaultInstance\u0027 for settings. However, since \u0027_s\u0027 is used consistently across multiple forms for the same type (\u0060clsSettings\u0060), this is actually a consistent convention within the UI layer. No inconsistency found here as the pattern is uniform.: No action needed. (symbols: Field: private clsSettings Case.ApplySysOrient.UI.form_MaxSize._s, Field: private clsSettings Case.FamilySubcategories.UI.form_Main._s, Field: private clsSettings Case.ReportGroupsByView.UI.form_Main._s)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"976f321c95281ebb12b6e5010b85b5ddefde148c58e99f203444beb603dec805"}},{"ruleId":"D21","level":"note","message":{"text":"Consistent naming for Culture properties across all Resources classes. No inconsistency.: No action needed. (symbols: Property: internal CultureInfo Case.ApplySysOrient.Properties.Resources.Culture, Property: internal CultureInfo Case.ParallelWalls.Properties.Resources.Culture, Property: internal CultureInfo CASE.Navis2BCF.Properties.Resources.Culture, Property: internal CultureInfo Case.DimensionOverrides.Properties.Resources.Culture, Property: internal CultureInfo Case.FamilySubcategories.Properties.Resources.Culture, Property: internal CultureInfo Case.UngroupAll.Properties.Resources.Culture)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e20e1ea793e0a6603ff9612e794deff59d28a48162e36c3842ce5c1dedbd46fd"}},{"ruleId":"D21","level":"note","message":{"text":"Consistent naming for ResourceManager fields. No inconsistency.: No action needed. (symbols: Field: private ResourceManager Case.FamilySubcategories.Properties.Resources.resourceMan, Field: private ResourceManager Case.ParallelWalls.Properties.Resources.resourceMan, Field: private ResourceManager Case.UngroupAll.Properties.Resources.resourceMan, Field: private ResourceManager Case.Subs.KeyMatcher.Properties.Resources.resourceMan)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"58072086770f02cf7c3a836414d91697c2d9b1e683d7dffe998edf0df08989a9"}},{"ruleId":"D21","level":"note","message":{"text":"Inconsistent naming for the resource culture field/property. Some classes use a field named \u0027resourceCulture\u0027 (e.g., \u0060UngroupAll\u0060), while others use a property named \u0027Culture\u0027 (e.g., \u0060ApplySysOrient\u0060). These represent the same concept (the current culture for resource lookup) but are named differently.: Standardize on \u0027Culture\u0027 property or \u0027resourceCulture\u0027 field across all Resources classes. (symbols: Field: private CultureInfo Case.UngroupAll.Properties.Resources.resourceCulture, Property: internal CultureInfo Case.ApplySysOrient.Properties.Resources.Culture)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"2fd7ac9a6297417601e9a0c28bbf49a6b9b4efcd4f9115f4211e99f1f3132e64"}},{"ruleId":"D21","level":"note","message":{"text":"Inconsistent naming for the resource manager field/property. Some classes use a field named \u0027resourceMan\u0027 (e.g., \u0060FamilySubcategories\u0060), while others use a property named \u0027ResourceManager\u0027 (e.g., \u0060Navis2BCF\u0060). These represent the same concept.: Standardize on \u0027ResourceManager\u0027 property or \u0027resourceMan\u0027 field across all Resources classes. (symbols: Field: private ResourceManager Case.FamilySubcategories.Properties.Resources.resourceMan, Property: internal ResourceManager CASE.Navis2BCF.Properties.Resources.ResourceManager)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"4f20a479fdd38a070c84a32bd1b414f725309c8f7ffbcc2bd4fac9ddf56d1a26"}},{"ruleId":"D24","level":"note","message":{"text":"redundant comment: \u0022// Summary\u0022 \u2014 delete - empty catch block comment."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a26481ea73fa015e38f7d6cf8eb8e5f4d88ea0d2477634948a2a3457266be5e"}},{"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":"7c88fd6ebe4b150d15bcb15636e479a4e4b7fb7974500e3dd3fdf82ee23bbc22"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"fdb20cfeff64a99a11050ba9435f5291a363dadb8aa29bdf2f42b208f90ff189"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"b2a66b4013489b8da7813d44d49b9e412312165e4e1e763064ece726b6809c15"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"8dafae0f686e6b6b0f4a7fc3b16348a83a8b3713800e0783af4e4d7c9352c2f5"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"7e7cfc377187cba8beb155175d68afdf6e5d0ce14162d486a82e0f03f34379cd"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"c60296430048989912a942c4a0991f5f7cfc2284db720605efdeb7c75eaf8e5e"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"f1d7add8ee1f7a8171c3cefa1fe42f1de671a99d9e466d5b4273855bdcc3b437"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"c28f2b6762e4f08f0e0460ce690b6a8b195a57dd2d4204bff6f617eede156e5e"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"79a581a08c76d9441f64bb80d55e2c01a2a2e6164122ace2556c2ebd850238f3"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"1c5fd0c8a5876e709dbaf2cc3d710f096f7dae3a55d0112559c2d42382e89a67"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"88806bd534f12fad3eb4f553865a15be578ef1c333863519ace5a4d8d2ff0aa9"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"34758d3251de8a3c01a99d1772502e47db613c349b4e751618a0f28578bbc6e4"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"f0b90683e3f858b3dcbba329833bb827348cf7ec0a4b44a6bea3aab7f6d2a30b"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"0361be2cb8536047033f7348e6b295e04f6a7bdb1abe0f5148b25b8b36209f57"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"c7acbde13d4c03a862060375dd3b593d39c4cebd3b67cc892862167fa895ea18"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"ea9cc2e43e37e86a8a4a69846fbf0eb7a5869fea8e265105e14fec5dd7eec4ab"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"a9f267608574e419fc9b66a0b8d78d726ab55101d47ddb419d179d90c71a0e3e"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"9764e824e0c2956f69910bb7ac6f58582b994c7fd48f033e380d6cb97fa95618"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"807b3a16458906428d357e355351344059f073944727f6cbbc0d7ddf281efa71"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"1dacf879d153bdd54f774e859860ac8ad9db7b3ad0387c30ced1c5a7ae95f13b"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"4f6e071706ff6e2dd19e891f4700510d85bf15e779ec73e48ca6121d75e2175d"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"b17881403a76566a0a3dcb42e103819927643599b0666fb595adee6ce069fef4"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"e39cdb8f80d34a683e69ca92413f1c0a8490d2d3e76f4f27bca3c9e1c96c3b7a"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"fd287229ea09ea95fef7d512e06e1d859eb4d518123f8f721670d01c71188b29"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"2fbd1fce7c3f86b39e8b20a01fb59c6b34e9fb3219f139a4a2cf574f490de3e6"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"462ad6a04b3f43438fed61c4f4cfe4db23e63266614525b3c793dbe1afe63f4f"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"82fb9a67af70b3e9ba531ddb64e9df0acebbabdd26e19b18828943cdfa052616"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"e67b754c515b648856e759923431d9864ba337031df85fb316c6c814c828eeea"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"9bc21e3db2c1d1116fae5aae3230f382897542dc2b12c4b9afddd409573db082"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"a1da7d97d96780d44c7a8aa60915f1f0f7a8d1bd4a4af6de7c42eb61e3b05066"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"6534cb591443bac62db71675dd1806b4aee36e4359918a84dfa3a847a29f17cc"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"feeed2baec64a9269a3c0ee7d923171513d4abf05a6b2b9e9dbab7347dff5b9a"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"32fd8e2398caaed099763cca843d1d92acec4750ce146827740f26bf8adab865"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"9496dbc15561a37ed8b181e39ecb2445b0bf5166a828e2e3679a952dd670c59a"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"cfdcd5ce7afe97794e5f32d74cf6a843374ad341f91e7d3ba7347971e6f68cae"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"2cddb21deb4a479167817b6f692e03f32caaa01fc837f26788e89af2f1a90a7e"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"8a354a2b909291996fef1615709da984a636a4afce3004bba3dc269ad2410d55"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"1a64b2aa2b7d80c5e7219a61334611c2c2c5578111b3a9e9661ce314088e671c"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"24b270bdf69d3a3123796f784d9736ab1f5539f88d261164d4ba41a90fb50ff5"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"b2c048689f7dcf044cc91cb6a0c288d7f0ab7e445908561238156c044e952ffe"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"f5b128c74cbf7c96025adc505d63674eeae5943856972f3ab502506831a92d98"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"d2cc5a1aa9b8cea075db14b6c45bbf95490ba129be3e543b7650e6b584358ae2"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"e98d3d1238c6aec5f461212e3f3aea3003971d7e75c63de513a8aa525c6a4229"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"2239ba6ce0784cc74da27ceb5d82ed5d40b23dc369b5a6bbb47f670ffb175eeb"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"bf4ed0a554ea0c665dab564c7130a6d5ae6fc1cf8378fa041a47e9fdf3e5eca1"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"529afae171a4770cd2b5906cbb7189cf44ee6fda36d3357e308d1335ee2b6211"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"86348c7a3ec88a3f4d9df2ea712748f36031ab1e84cbea21ea84d99a4c6120db"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"0eb59d823c676fffd80bdd34e4234478ace2819a3b62fbba5736e92a3365c912"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"dd0a617f7780de578c9c46320dfd137c90e853c0198306e1ea0b5add047cdef8"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"a7dbd36ea266f152272dc541d900d0a5962f1b915fb6d952139cfa7785490a5e"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"faaae556d5d1de647903ce9505399367f0e1fb64021c509a3dbeba8b4606d7d0"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"c33fc25fb3dbee8412f44869a99b34f1d8beecea2e4943c69e9c43fa4729ce4c"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"3b6b2965b0e0fa5c2336736c0b709562a65c8502bf3414b8730880c554683587"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"7d36cd5714bec110a27374cdc061deea342c9149437712d9c29a5aecaa14ab90"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"e21e5ba4c6bf21671d2961d1fccf57d96151b4c052627dda29b737394db369cc"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"74160fd20f3939e103b89db39a1dd212edaa3480153bc19a886b50bbd6a9ec5e"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"27d2c4f1faaa39dc5e9c2615183a81eb19d7da8315f43e013f2834418d851c27"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"cbe49d15a99b4ce1d808522043697e3f494cdcc9b318239af6c863511267c5cf"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"6fe6b4fda21a8a0ec0328a9a6c0c8477525439ebb6a8484c46c8d8b8f0031eed"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"73a4345a3d741af0a35bcf14de2e59d030f5da1eaff387d2b8814286b32b3aed"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"d61dac4e2d7ee44300585cf81d92b133df2b016d9ff50122ae283d2ec7b79df1"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"e64c21c56be2b0d67bafc46d13c08f43e90faa3c1aa77e51000e46ea4be684d8"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"96d323e3f0a552fa0a3b00f76affb7dfeb1fd50996f2f6734dcdeef145545455"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"ef88a170629c8cd562523b1dd14dafc165ad6f5b84f80df3bf29e7e7219c317d"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"81c95fc73cb731e6ea3fbaa80983019e54f0a9ae3b4ee52d568e098d025bf4e2"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"e2ee362ff85b4ff786a1a9b542f5d2591a6d42d57323b5daaba077d20e1b10c4"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"d1ab0b02fa59542f57496a938f9c9d67c65cfa3133c827bcc3401b42a40b0c4a"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"4743549ba1402f23958ae7af40294a5f29e9be3601c6a7065414b23db0f9188c"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"203a37bd93787e96d748f713ff4e1d4b25613fb1744ee33e4e8e908559479e00"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"4f0f8a5acd733d1f5a203c87c359f7168a4bbaf4baadfcfb7e392ef99ac8a8cf"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"433fe25f5d0c6823db0e1d6223b4cedb52da2a6cc5c3a2e7dfcc24df7870261c"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"66fc1e18db5b835322419e1c65ce0338d7b1c1070b9aaee0775f784d894c0981"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"a92e1a5fb0d74142121021c9fa9cc80ad65aa9845c701f658dbbb99c5e61c673"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"181d6bd5cf0afa3ee404bd061c74e82af28be7a7eba393fed11170d883325a07"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"d5eda5fc767fa0e450bc1f83971281d98ffc8df702cda083da4603062b3f1439"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"c2d95669a9404d7be6ea2505c48f14027521a8616b132afe2109774b23a322ec"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"e714169af19c67b56d635960fe3c959e8b9692f42a87f6bfc588a4c31bc9a823"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"760ceac438abc0d9f2da6e93d6a0b551a92c43705db2266cf3e7a7a2c112f725"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7056b6006d499d92c89aefcfd94425c7e6c3e493bd056b8db2acca36d0f0523e"},"properties":{"dependency":{"package":"Newtonsoft.Json","version":"6.0.8","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f4a5e648a6cf03d1e368c0d7229a46c6911623744f781993b8d770d4d5344a6d"},"properties":{"dependency":{"package":"RestSharp","version":"105.2.3","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"bfa549ee344e25468248680be4d5ecb1aeacd427675dcc2ffae133c2539c811d"},"properties":{"dependency":{"package":"DotNetZip","version":"1.9.8","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","SNYK-DOTNET-DOTNETZIP-60245"],"reachability":{"kind":"unknown"}}}},{"ruleId":"GD1","level":"warning","message":{"text":"Unfinished stub \u2014 throws NotImplementedException: A shipped member still throws NotImplementedException \u2014 generated scaffolding that was never completed. Implement it or remove the dead surface."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Converters.cs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"de15fb7c8100a40938e8183d4d9309157fe38d5920b02e3a6825b1f5f427cf1c"}},{"ruleId":"GD1","level":"warning","message":{"text":"Unfinished stub \u2014 throws NotImplementedException: A shipped member still throws NotImplementedException \u2014 generated scaffolding that was never completed. Implement it or remove the dead surface."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/VisibConverter.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d6da130d9123ea37d6ddf02d1dd0bc3e054e1271cf3dfff8ef8fc50d298fbe7"}},{"ruleId":"GD1","level":"warning","message":{"text":"Unfinished stub \u2014 throws NotImplementedException: A shipped member still throws NotImplementedException \u2014 generated scaffolding that was never completed. Implement it or remove the dead surface."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Navis2BCF/Case.Navis2BCF/Converters.cs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a5612be5f12b5bfa9a8f1a4de71ee57f46044b7be3a1b13e6e45592982b3cb8"}},{"ruleId":"GD1","level":"warning","message":{"text":"Unfinished stub \u2014 throws NotImplementedException: A shipped member still throws NotImplementedException \u2014 generated scaffolding that was never completed. Implement it or remove the dead surface."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Navis2BCF/Case.Navis2BCF/VisibConverter.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6e900e5ceaad62ee566cc35f1e03a656c9ec2921b80e8bd64d5c8c856abaae8"}},{"ruleId":"GD1","level":"warning","message":{"text":"Unfinished stub \u2014 throws NotImplementedException: A shipped member still throws NotImplementedException \u2014 generated scaffolding that was never completed. Implement it or remove the dead surface."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Navis2BCF/Case.Navis2BCF/Converters.cs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c19a54ce3a0a50d20376fb4f5041e6aa505277064f04aa821700a61f30d7a6d"}},{"ruleId":"GD1","level":"warning","message":{"text":"Unfinished stub \u2014 throws NotImplementedException: A shipped member still throws NotImplementedException \u2014 generated scaffolding that was never completed. Implement it or remove the dead surface."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Navis2BCF/Case.Navis2BCF/VisibConverter.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"d842866573cedfa0423b9223462b8f1180fb2e6d5a4534842864325a05a73101"}},{"ruleId":"GD1","level":"warning","message":{"text":"Unfinished stub \u2014 throws NotImplementedException: A shipped member still throws NotImplementedException \u2014 generated scaffolding that was never completed. Implement it or remove the dead surface."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Navis2BCF/Case.Navis2BCF/Converters.cs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"cef45b48f867fcd12204b03e7077de67d6680cad9d582f723dcd056181d8696c"}},{"ruleId":"GD1","level":"warning","message":{"text":"Unfinished stub \u2014 throws NotImplementedException: A shipped member still throws NotImplementedException \u2014 generated scaffolding that was never completed. Implement it or remove the dead surface."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Navis2BCF/Case.Navis2BCF/VisibConverter.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"abbc3b7b80b20024d07541e11ec2c31c21cebdbea5d077fdd2f7ad5b374e62d5"}},{"ruleId":"IC1","level":"warning","message":{"text":"Empty method body \u2014 does nothing with its inputs: \u0060LogData\u0060 takes parameters but its body is empty \u2014 it accepts inputs and does nothing. Either implement it or remove it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d1d21efa136acbe3154de7e785e6b73c267800c2846fcb0c845167031780ad9"}},{"ruleId":"IC1","level":"warning","message":{"text":"Empty method body \u2014 does nothing with its inputs: \u0060LogData\u0060 takes parameters but its body is empty \u2014 it accepts inputs and does nothing. Either implement it or remove it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"43bb14585fd2d20ed0fc7ecefe4c700b5a82e7060343f3a4149d7eeefb6c63f4"}},{"ruleId":"IC1","level":"warning","message":{"text":"Empty method body \u2014 does nothing with its inputs: \u0060LogData\u0060 takes parameters but its body is empty \u2014 it accepts inputs and does nothing. Either implement it or remove it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a37dc92c87dcccf8b8140cc8c222e61fff8b1607effb0ed2177039ff015e263"}},{"ruleId":"IC1","level":"warning","message":{"text":"Empty method body \u2014 does nothing with its inputs: \u0060LogData\u0060 takes parameters but its body is empty \u2014 it accepts inputs and does nothing. Either implement it or remove it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e4c9579ccd8004ce943bb76481a5a7dba5bd2084b2ec0668cd1739271e28174"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbcb65a84d545112d885b7b8d63e66b465388c6d4dbd7eee1af43be75dbf45c4"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1b5a89d5edf689723fe7385134815a25dc1ab74ed9e814a91e0d171be1d3427"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba4c722b5186687aaa413eca23e12c904fdcd421e1a488de1afd7c35ce5892c7"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3050d4ad897a7bb7c5d601c0d464fa4c752b13d090e0313f0bf5d9086528e4e"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5cd152a6d406b15b40d607d08f6169465c1e9473c658b2a7d381db7ddb56989"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"81dbccc3384fe3f6d3569a8f92ecd4744b391ab99af43378ee9bee11f4a5b2a8"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b9100628bd9e28c650b07e47738e3ef9393010dbf3ceab777c58c909932c400"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb43d368de43aa0460009037c712b87799ca3cf2894701d231f9d7c55941bbdc"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee350c3cf9343a493b75e67c2d180c1daa39da59e6f181ce63116d490af40f49"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bcab996331651e2ac7eef3c27aa18a18822ba9d6ec5764727265efcf9ca0201"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"b52580c9a1d4a64979f3dd5f03fb3e10c9d7be3da7653759a3e7ac338fa11cd8"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: 13 consecutive lines of code sit inside a \u0060/* \u2026 */\u0060 block \u2014 a block of code switched off rather than removed, which rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"bce4982af8e7da883487e31df86288529797c72889aba83a384a9c02f6618067"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"d904b97268bc4dcff7bf6e349e369d8eff6b1d7341ce80d09dae4a409cde5faa"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0bd5b33141503af9bae7450cd949f3070a276e1f974448269a5c6828867b332"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"72d05c8e63dbf7489a7ad6280aa36810d7ea66243aca24123affa28282afc92a"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"3aeac4fa75faf44dd9d994543e39ded66acf36a6269546c9be20c18164f817b4"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"da12cadfac4206d8457d8576c4b1ddc0baf45d62e6510273dce4e27060f664b9"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":400}}}],"partialFingerprints":{"codehealthFindingId/v1":"b253afd9889664ab83585fa07395e767bbe4c1ae5487dbf940b0dffbfa9df007"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"02582a01b3c8efbba534cb99e67ba552590eb229c7fa808586906d60ac2334cc"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"e52818e463899f72d50a41708688f696c31c5582a36e8a97b717716178454240"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d1f0b45a74c776b812825d080234190dee0a9599bab00ada35514a7fb1d3188"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fc7ce18b338a438af42b0ebb54b2d55487c37f5f22001c61046dcb0b7925edc"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ec8a9df4251043c1364134f965a5acddc9669c32c5bbd3bfbac01b43f189b4c"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cb85115a90a8c42b4a9e5831b073cecd1fce8f052e877c5e8ecda073ee121b2"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"435d2e490d28541e2568bb57c29aa4e7df2511ec117f02e823937f688dfa4322"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"64b09ab134d9e7e3858e9f61831ea877c7b8ab07b1ef63f2cfbe2c04f62fcab1"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f6d348f21f886181ee9c23668ec3b4dd14c1a9fd9ca4c4bb561a67444af952b"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: 13 consecutive lines of code sit inside a \u0060/* \u2026 */\u0060 block \u2014 a block of code switched off rather than removed, which rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ba88df1825ff2539067eb68b35191689da52c932988e9464c277eaeb0360ef4"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e601762222dad2d5aa38fd2064169667ad404c567d3d2795d23476bd1fa72b1"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"da9d307ab3269db28bd9cfd2eaac60c565d17005e5edc1ad028ce74b2b0e534b"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"b92955a80bf8e9f4100aad2399c33f497e5bf92c1ae7021aca1f2df5f07645ec"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0a4737c31a73b69518d3b5833739cf81be3d28113483dfd3db4a1845471eea1"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"f41b50a3e7209cc5224c94dc8d96c2dba58b0957f46dad89585116c5d151e3ba"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":400}}}],"partialFingerprints":{"codehealthFindingId/v1":"07c38519d24531eb9f252b002d515daf886d292f936ce47dca4e45d4edaca01c"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"598906224ea0d5904e6683755ceb955a35abfb625ff92165c3f0272bcd62fcbb"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"2581a86112813088e3f815b9f0974cf77d694e9f27424e59304750d487853b6d"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"8af067da1cfa80c6fef7a9dcdddfe95fa33d5783cb6177726a363263b83a2b38"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"f66b366f25cb2b4770009f040b2c6576aed023bf4c0cb3ef2ee54cdc42cd8fdc"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbef3ad273bb20b56b93574e4e978ec83ba24b22690a2e1f4037b0efe5b9e855"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"39b3e6a24731ecd5c1f3f3def5559bc43b614c111ff1c3feb263b5c529a79aa4"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"2472b617d07cc45aba6793473bd67ec451a2ba56e5e035d3905aa53fddb5523d"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4643055be374b94f0d1e3e79f8b8ede2b4f00d2a28979c545ef6866de6930af"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c3c350c1bf701ca30b424ca2b349027a033a84b92d7cd2d3a087b42a07b80b0"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: 13 consecutive lines of code sit inside a \u0060/* \u2026 */\u0060 block \u2014 a block of code switched off rather than removed, which rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"58d93fb125bf4df7effde6f78b6edb6bc431fd7dd487b7a670b5d860796d39bd"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e5316fa8bf184c410000368d93be35d061f66b6319fa84c196e7ca5c11f6f44"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"110cd19f1fd77f39bdb5214923386bd5d969f6963bc49ae2920f7cafddd67e5b"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"a054bc831b93a6f25fdd61abb77f6861439c1df84522d9d41bf9ed9da0e0864d"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7509397a8b2226c30aac4ef4fd1196e3eb7807c54895a3e4b613d99543579aa"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"b92ba88c5d68ee3eeaa1de0ab05f0ccb362e27319ce503daa3f71fcec7e7823e"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":400}}}],"partialFingerprints":{"codehealthFindingId/v1":"aca3124adbf8588936abadfc5af4d73cdc0e63c3a7430f8eaab5eeec1a897f85"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"8387509288eb0861f03ac07df758b41f09a29ca3fb809b71f32f469c2d310a3d"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"94fe0742d5ee30f3f6e0e71e474c982153dbe7705501d3a006ad4b4382ba434f"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a7404248c18c83cb8c51dafbb087d0e2ddecbf83ccfd94d362b9377b853c7f4"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"02fc7696d44b8a4d15e713f39c404e71ca19e5ed5127de9e8089850d3214754f"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"7820b85948e3b6c672a601a9afb3c5cf024af463ac7d0c7a5be6bc0b74f6863b"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce999899c7709ab87d0b760509509e974c28a3fde24bca05a2c0afb5e789262a"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a30ca37f3f5a688d844f4518bd07a9fc3c0c2ba45790c0730719aa704a3c81e"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"e36309184adcd7dab0b0b119a05c4cc8cc7920266da8a72484ad7b911e48b783"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.FamilySubcategories/Case.FamilySubcategories/UI/form_Main.cs"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"02d4f8c73dd6231a216008332d37f27c6aa13752bf6afb05547cdf1443561fcc"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: 13 consecutive lines of code sit inside a \u0060/* \u2026 */\u0060 block \u2014 a block of code switched off rather than removed, which rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Navis2BCF/Case.Navis2BCF/IfcGuid.cs"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"963586083bd88fd1de8a3f13f7311625e360e3be5f6870c08a11f1fa06450219"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"f56f4910fb7f861c45801de31131f9814488767c1cea485908a560b0b505847f"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"97fc8e02e6908eb78174f35c9614e2dfd27a1dd9e455d5438315768e0e804059"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"993a13ea69a29d9af2c91cb6e375fca7f8d5fd7c81ead214e6eb9b52d5863af7"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d84d4f581cbece49dd1ee4fe4f5ae1836bdbf47fac448afae9048307b6487ef"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"9577bdae8cfef2353312dd2dd38dadd039b5b2d34de5768071f93ce6a7f80c5e"}},{"ruleId":"IC1","level":"note","message":{"text":"Commented-out code: A line of code has been commented out rather than removed \u2014 dead weight that rots and confuses. Delete it (version control remembers)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":396}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd7e562ca51be13d6f7b0b4cd36c508a1f4f9f3cae1876308319b8d109f6c8de"}},{"ruleId":"M2","level":"note","message":{"text":"No ADRs: No Architecture Decision Records found \u2014 no conventional ADR directory, no numbered \u0060NNNN-title\u0060 documents in any markup this check reads, and nothing ADR-shaped by content. Design rationale recorded elsewhere (a design-notes tree, a mailing list, pull-request discussion) is not visible to this check and is not re-findable per decision, so a future maintainer cannot ask why one choice was made and get an answer."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"670b3d6e36a756d63097d0dfbf90afd5fc761308800b9354894a07c3f4e4aa14"}},{"ruleId":"M3","level":"note","message":{"text":"No src/ separation: Production code isn\u0027t grouped under a src/ folder \u2014 it\u0027s spread across several top-level directories, so there\u0027s no one place that says \u0027this is the product\u0027."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"fdf7f5b24e313364d10170a5c2542959902fe0d26ed70edef3eaa10ec5bcdb1d"}},{"ruleId":"P1","level":"warning","message":{"text":"No CI pipeline: No CI workflow found (.github/workflows, azure-pipelines.yml, .gitlab-ci.yml, \u2026) \u2014 changes aren\u0027t gated by an automated build/test."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"44f01af96e50474fba2df84d95ddf4f7e1d34c29c307830b9efc9057daa6b670"}},{"ruleId":"P3","level":"note","message":{"text":"No SAST: No static application security testing detected. For this repository\u0027s stack, add a Roslyn security analyzer package referenced from the project (the analyzer packages do analyse VB.NET), plus gitleaks for committed secrets \u2014 CodeQL has no VB.NET extractor, so its csharp pack would extract nothing from this tree and then report it clean \u2014 this repository has no CI pipeline yet, so run it locally to clear the existing findings, then make it a step of the first workflow you add so a regression fails the build. What was searched, so you can tell an absence from a miss: the 0 CI workflow file(s) in this repository, and the scanner and linter configuration checked in beside them. A scan that runs outside CI, one configured in your forge\u0027s web UI rather than in a committed file, or a tool whose name is none of those this check carries, is not seen \u2014 if that is your case the row is wrong, and saying so is more useful than adding a second scanner."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6e54424179c892f03ef2fd003130ac4bd43f39bbf3b1ca0a0143e25acb80ec87"}},{"ruleId":"P6","level":"note","message":{"text":"No changelog: No CHANGELOG/HISTORY/RELEASES file \u2014 what shipped when isn\u0027t easy to reconstruct for support or audit. (Versioning/tagging makes releases traceable, but a changelog records the what.)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"dda5aa5aed8cbb292c3ef2b733bc138f614293ae6426c85e98bf31ef330d9415"}},{"ruleId":"SC1","level":"warning","message":{"text":"NuGet dependencies are not locked: No packages.lock.json and no central package management \u2014 restores aren\u0027t reproducible or pinned (SSDF PW.4.4). Enable \u003CRestorePackagesWithLockFile\u003Etrue\u003C/RestorePackagesWithLockFile\u003E (commit the lockfile) or adopt Directory.Packages.props. Advisory \u2014 never scored."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"0a97b4f69ccac509400ece7eedefb06d3ede0522cd4d8bcb5c068bea719545a6"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060!dlg.DoConduit \u0026\u0026 !dlg.DoDuct \u0026\u0026 !dlg.DoPipe \u0026 !dlg.DoTray\u0060 appears character-identically in 4 files \u2014 2015/Case.ApplySysOrient/Entry/CmdMain.cs, 2016/Case.ApplySysOrient/Entry/CmdMain.cs, 2017/Case.ApplySysOrient/Entry/CmdMain.cs, 2018/Case.ApplySysOrient/Entry/CmdMain.cs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Entry/CmdMain.cs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"abdb77aa032c4aca12c4f73d7a9a61626b671e665c923f57317c1bdbc6b8798a"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060AnnotationCatCheck.Checked || ModelCatCheck.Checked\u0060 appears character-identically in 4 files \u2014 2015/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs, 2016/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs, 2017/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs, 2018/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd09226e884281940cf9184708f13a307b6c036749066bdf38c1d3f105463db8"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060AnnotationCatCheck.Checked || ModelCatCheck.Checked || AnalyticalCatCheck.Checked\u0060 appears character-identically in 4 files \u2014 2015/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs, 2016/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs, 2017/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs, 2018/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ObjectStyles/Case.ObjectStyles/UI/form_Main.cs"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b8a063073e81c62c8b8c85366c5a59c8d9a534283b74817dec2ebc89bac5e51"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060_WallLocation == null || _RefLocation == null\u0060 appears character-identically in 4 files \u2014 2015/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs, 2016/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs, 2017/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs, 2018/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ParallelWalls/Case.ParallelWalls/Data/clsVectors.cs"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"46bea619cea4ebd5f14995bd76123af19028b50da0647eae19b8d55e9d5fe3d7"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060app.myProduct == \u0022MEP\u0022 \u0026\u0026 subdiscipline.Trim() == \u0022\u0022\u0060 appears character-identically in 4 files \u2014 2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs, 2016/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs, 2017/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs, 2018/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"7414145ef44132992d80c15714abfdddaa7716d7b34147d10a37b665531bc9a7"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060checkBoxGroupsDetail.Checked || checkBoxGroupsModel.Checked\u0060 appears character-identically in 8 files \u2014 2015/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs, 2015/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs, 2016/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs, 2016/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fe5d4732a75ec08545d1dffc82b81e2550c2b08556d6f7189729b35edc475b6"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060f.FamilyCategory.Name == cat.Name \u0026\u0026 f.IsEditable\u0060 appears character-identically in 4 files \u2014 2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs, 2016/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs, 2017/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs, 2018/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnSettings.cs"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"242a9e5466064971ab6a70e2c687ca2608de1fc0daa4546e159a0634e1ed59c4"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060m_cat == BuiltInCategory.OST_Lines || m_cat == BuiltInCategory.OST_Walls\u0060 appears character-identically in 4 files \u2014 2015/Case.ParallelWalls/Case.ParallelWalls/Data/clsReferenceFilter.cs, 2016/Case.ParallelWalls/Case.ParallelWalls/Data/clsReferenceFilter.cs, 2017/Case.ParallelWalls/Case.ParallelWalls/Data/clsReferenceFilter.cs, 2018/Case.ParallelWalls/Case.ParallelWalls/Data/clsReferenceFilter.cs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ParallelWalls/Case.ParallelWalls/Data/clsReferenceFilter.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"d366124d6ec6382f3afaface6ab2db14a3093461bbbc32f3231c1d6996f58672"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060m_key != null \u0026\u0026 m_key.GetValue(m_version.ToString()) == null\u0060 appears character-identically in 4 files \u2014 2015/Case.ParallelWalls/Case.ParallelWalls/Entry/CmdMain.cs, 2016/Case.ParallelWalls/Case.ParallelWalls/Entry/CmdMain.cs, 2017/Case.ParallelWalls/Case.ParallelWalls/Entry/CmdMain.cs, 2018/Case.ParallelWalls/Case.ParallelWalls/Entry/CmdMain.cs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ParallelWalls/Case.ParallelWalls/Entry/CmdMain.cs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f14987e527059e037d7a8e284d9079119a6e40fa7d7399f81de5c918646d2d9"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060m_pr != null \u0026\u0026 m_pr is DockPanePluginRecord \u0026\u0026 m_pr.IsEnabled\u0060 appears character-identically in 4 files \u2014 2015/Case.Navis2BCF/Case.Navis2BCF/CASERibbon.cs, 2016/Case.Navis2BCF/Case.Navis2BCF/CASERibbon.cs, 2017/Case.Navis2BCF/Case.Navis2BCF/CASERibbon.cs, 2018/Case.Navis2BCF/Case.Navis2BCF/CASERibbon.cs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/CASERibbon.cs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"e251b8ef3808c3e4e32e2c03b198f2440df96e0ed0020ecb5ae7fe2951efe756"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060m_resA \u003E m_length * 0.999 \u0026\u0026 m_resA \u003C m_length * 1.001\u0060 appears character-identically in 4 files \u2014 2015/Case.ApplySysOrient/Data/clsUtil.cs, 2016/Case.ApplySysOrient/Data/clsUtil.cs, 2017/Case.ApplySysOrient/Data/clsUtil.cs, 2018/Case.ApplySysOrient/Data/clsUtil.cs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsUtil.cs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c075957ccfb36d52086f94976534aa91bc821af53d2458302beef74966ca2fb"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060m_resB \u003E m_length * 0.999 \u0026\u0026 m_resB \u003C m_length * 1.001\u0060 appears character-identically in 4 files \u2014 2015/Case.ApplySysOrient/Data/clsUtil.cs, 2016/Case.ApplySysOrient/Data/clsUtil.cs, 2017/Case.ApplySysOrient/Data/clsUtil.cs, 2018/Case.ApplySysOrient/Data/clsUtil.cs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsUtil.cs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"fde4e4d864c089c35085cf176301e782d648034da82130ee5aacc60b8f3a4a4a"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060null != elementList \u0026\u0026 elementList.Any() \u0026\u0026 _elemCheck != 2\u0060 appears character-identically in 4 files \u2014 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs, 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs, 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs, 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e56719161084f864cafcfe6ce045ff84491cc9cf54d0cf887b63fd4c3359065"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060o.InstanceGuid != Guid.Empty \u0026\u0026 ChechHidden(o.AncestorsAndSelf) \u0026\u0026 o.FindFirstGeometry() != null \u0026\u0026 !o.FindFirstGeometry().Item.IsHidden\u0060 appears character-identically in 4 files \u2014 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs, 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs, 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs, 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":466}}}],"partialFingerprints":{"codehealthFindingId/v1":"015efd22bdcbae41d61d308d51d73930dee1744cf5f71a51177bdc0efc0cb9bd"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060result == true \u0026\u0026 saveFileDialog.FileName != \u0022\u0022\u0060 appears character-identically in 4 files \u2014 2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs, 2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs, 2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs, 2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce98ba10a8058b8151dab18ac5aa29b319bd938a50ca870ed3872e537029f622"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060subCatList == null || subCatList.Size \u003C= 0\u0060 appears character-identically in 8 files \u2014 2015/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs, 2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs, 2016/Case.FamilySubcategories/Case.FamilySubcategories/Data/mnFamData.cs, 2016/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ObjectStyles/Case.ObjectStyles/Data/mnFamData.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d660498a5e85e6be08575c4d9c48abbbd5fcacab139602ff34a0ff171021398"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060v.ViewType == ViewType.AreaPlan || v.ViewType == ViewType.CeilingPlan || v.ViewType == ViewType.Elevation || v.ViewType == ViewType.FloorPla\u2026\u0060 appears character-identically in 4 files \u2014 2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs, 2016/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs, 2017/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs, 2018/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7d71c8b64ec95d6ec80aefa3908e8561c2d1d0d80ce415e59ee9e604c3012e4"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060sr\u0060 is a \u0060StreamReader\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 83). Every use of it in \u0060GetPublicIp\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var sr = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad4f313af29fef1e981b36aeb4c45feac4b578eb410d9203502d39140fe08dfe"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060m_dlg\u0060 is a \u0060form_Main\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 114). Every use of it in \u0060Execute\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var m_dlg = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"f738dd74d0749053486b18575b88664ebff1d260de2e87221fefb563dfed6cfa"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060sr\u0060 is a \u0060StreamReader\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 83). Every use of it in \u0060GetPublicIp\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var sr = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"85046b9ec8629d2090e034a891915c399fe649d1f55a5fae17e017bc08cdc82c"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060sr\u0060 is a \u0060StreamReader\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 83). Every use of it in \u0060GetPublicIp\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var sr = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"398c57d2fc4e2101fe7aa57f1d740ed9a1f4a7529a6ac9444c47c3d530ab0505"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060frm\u0060 is a \u0060form_Main\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 40). Every use of it in \u0060Execute\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var frm = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Classes/Entry/cmd.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4a7f630b9139bbbc31b134f9685ddfcf72518a706f85440532d46ea87bd7f0e"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060sr\u0060 is a \u0060StreamReader\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 83). Every use of it in \u0060GetPublicIp\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var sr = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"e605e9f6338f3932c77e8527c6dd0c3d3b840108ddcd94ac1fbe061ef3144593"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060sr\u0060 is a \u0060StreamReader\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 83). Every use of it in \u0060GetPublicIp\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var sr = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb84ad2fdecdb8755b5e65e9ec090f5e699bba175ba2e66ef8a788f304cca11f"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060sr\u0060 is a \u0060StreamReader\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 83). Every use of it in \u0060GetPublicIp\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var sr = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"c96e149e088aaccd60318121298fcd152b24a30bbe12610f58b3fa639e19eb2e"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060m_splash\u0060 is a \u0060form_SplashScreen\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 47). Every use of it in \u0060Execute\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var m_splash = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ParallelWalls/Case.ParallelWalls/Entry/CmdMain.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"b19165b077f4810e516846f90e58fc6d936e7ff42176c858dfd8c67dfd29ad04"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060sr\u0060 is a \u0060StreamReader\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 83). Every use of it in \u0060GetPublicIp\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var sr = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"670e15ec5d035bb20609ffe818d59ae128e5e526193759397d43806ec2945f3c"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060sr\u0060 is a \u0060StreamReader\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 83). Every use of it in \u0060GetPublicIp\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var sr = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"73157555483ddf0dd173cecc14bcebed5ebcd14bdbe5d07191df6c7017f09204"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060sr\u0060 is a \u0060StreamReader\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 83). Every use of it in \u0060GetPublicIp\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var sr = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"0574f9577093a496865659bd89dc51261a37c1cd95eb04e29c206e613eec32cc"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060m_dlg\u0060 is a \u0060form_Main\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 114). Every use of it in \u0060Execute\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var m_dlg = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"d06a8e175797957dee5f1797123133f378ab0a47e0c95ea9d048b31f02a28913"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060sr\u0060 is a \u0060StreamReader\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 83). Every use of it in \u0060GetPublicIp\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var sr = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ae0351ac6e2e6754f2af9347d4165ecb9836918880ee90029adebfbb3fd8a6b"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060sr\u0060 is a \u0060StreamReader\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 83). Every use of it in \u0060GetPublicIp\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var sr = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7b67781d9d818944a9536403236b0b286bf9c8a575bfc1e1fac0fbe65f8cf90"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060frm\u0060 is a \u0060form_Main\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 40). Every use of it in \u0060Execute\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var frm = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewCreator/Case.ViewCreator/Classes/Entry/cmd.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"695bdecb75842ad89b31005954f907745039f047e1f5ee3bc95b5a3b899f911b"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060sr\u0060 is a \u0060StreamReader\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 83). Every use of it in \u0060GetPublicIp\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var sr = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dc3bfd2b18c24c754023fb289e6b892e496886c4ce3005e8b29775c6243bd3c"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060sr\u0060 is a \u0060StreamReader\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 83). Every use of it in \u0060GetPublicIp\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var sr = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"fba654a8af98e427947de2ebf176751d947d1f01621eea25ac457f47339776db"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060sr\u0060 is a \u0060StreamReader\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 83). Every use of it in \u0060GetPublicIp\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var sr = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc165f3bc389399f28c64668ebb4daf3f47e151b7a344967b651a84083ad2af4"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060m_splash\u0060 is a \u0060form_SplashScreen\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 47). Every use of it in \u0060Execute\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var m_splash = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ParallelWalls/Case.ParallelWalls/Entry/CmdMain.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b70eea4ae4f7055481816949c62471b49edb842ee95c77c547366e224426f00"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060sr\u0060 is a \u0060StreamReader\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 83). Every use of it in \u0060GetPublicIp\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var sr = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"297493a8ff317775509d48debcfee25ea6b31ab956da790bd8b4b4f9268f6f42"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060sr\u0060 is a \u0060StreamReader\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 83). Every use of it in \u0060GetPublicIp\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var sr = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8da2de73c44e6cbf2fe3dc0e4d2b4a3be883602f97d1754c02175f488caf199"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060sr\u0060 is a \u0060StreamReader\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 83). Every use of it in \u0060GetPublicIp\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var sr = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a4829f8920e60c4f5f28aa6fc4161b027bbddee5ba26c5b8538282d070bf888"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060m_dlg\u0060 is a \u0060form_Main\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 114). Every use of it in \u0060Execute\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var m_dlg = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"469ae47a9fe0d15e8cc899bcf33c35e2ca3fd6cbdd43b37781abd5126a11ce9a"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060sr\u0060 is a \u0060StreamReader\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 83). Every use of it in \u0060GetPublicIp\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var sr = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a95e10c4e7a9d00740eb14734eb57ecdc48da911f9f685a62e017aa8846929f"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060sr\u0060 is a \u0060StreamReader\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 83). Every use of it in \u0060GetPublicIp\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var sr = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"d92f6a16387e2631b99d2deef73ff55575f58974fe9554dcddfae5345eabe9d4"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060frm\u0060 is a \u0060form_Main\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 40). Every use of it in \u0060Execute\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var frm = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewCreator/Case.ViewCreator/Classes/Entry/cmd.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c8a851d9bcaac7a1be83cd40bf0cb4cc85d61bc0114a4a6638af28239989cff"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060sr\u0060 is a \u0060StreamReader\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 83). Every use of it in \u0060GetPublicIp\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var sr = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"5313272978212f04d86796eecda0b62b9b95f507944b811eab9117778857532e"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060sr\u0060 is a \u0060StreamReader\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 83). Every use of it in \u0060GetPublicIp\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var sr = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"147c113c8f66cfe6142ae8e538b740994da1edf55aa43d121833298e50d33660"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060sr\u0060 is a \u0060StreamReader\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 83). Every use of it in \u0060GetPublicIp\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var sr = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"77f1ddf40b056230545393c86a0a8afdad6b54c135526b0b3d0fcf3b0fc75d7c"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060m_splash\u0060 is a \u0060form_SplashScreen\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 47). Every use of it in \u0060Execute\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var m_splash = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ParallelWalls/Case.ParallelWalls/Entry/CmdMain.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"c23d17b576b10085b4246be3febf764274c1b8457e774c4ea39986898f1cff70"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060sr\u0060 is a \u0060StreamReader\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 83). Every use of it in \u0060GetPublicIp\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var sr = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b3b3cb109d9bd18c6e2793d7a9f0cd3f6fa75bb69aa622ad81fee461aa9aef5"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060sr\u0060 is a \u0060StreamReader\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 83). Every use of it in \u0060GetPublicIp\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var sr = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6eedfaf03ad252ae48947af31ad5fbcd02685550026012541de50eef0b5dcc2"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060sr\u0060 is a \u0060StreamReader\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 83). Every use of it in \u0060GetPublicIp\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var sr = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"58dcd1a79b0117d2115f151cbdaab6a92a96844bebffc55abc9212fb38bb3e11"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060m_dlg\u0060 is a \u0060form_Main\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 114). Every use of it in \u0060Execute\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var m_dlg = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"86087d7f11314309094cf195e26a339577b8a0bd263350368dfd58a9e861534e"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060frm\u0060 is a \u0060form_Main\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 40). Every use of it in \u0060Execute\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var frm = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ViewCreator/Case.ViewCreator/Classes/Entry/cmd.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec40e3aed17a8f26841db1d08445af5432bf07b1a8f6d2e1e6b0b2f27e5923a3"}},{"ruleId":"X18","level":"warning","message":{"text":"Disposable created and abandoned in the method that made it: \u0060m_splash\u0060 is a \u0060form_SplashScreen\u0060, which implements \u0060IDisposable\u0060, and it is created here (line 47). Every use of it in \u0060Execute\u0060 reads a member through it \u2014 it is never returned, never stored, never handed to anything else, and never disposed \u2014 so this method both creates the value and is the last thing that can release it, and does not. Nothing announces the leak: the object holds its resource until finalization if its type has a finalizer, and until the process ends if it does not, so the cost accumulates once per CALL rather than showing up as a failure. Declare it with \u0060using\u0060 (\u0060using var m_splash = \u2026;\u0060), which releases it at the end of the scope on every path including a throw."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ParallelWalls/Case.ParallelWalls/Entry/CmdMain.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5e4ad5e2440c1c9e9c1fe89b0ae3d627a1316d98f019ef88be3dda4bd339a68"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"8565c894d1094be099aad889b29b195f86c9c823c5e6155bad48295480b91f9e"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"832b021e7cefc0fb5513f99bfc0e7d2411c77046d8a8be689bf4be14db218959"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"f22c476414c83f91915e3782fde42020ec33c0aefb264618b6442f8badc03264"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"c092e26ecff40d0ccb5a5c6c1a477d238d7783d28740bac31fdd4f184830224d"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ddbf1501cc7312dcc11eee0b42254ebf05a900199ac2c02e9ad5ee0b97a7875"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"e604c598a5db48ddb3e135b3dcfc1b407f9fea224b5c4ba071a267f66fdaf660"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"96902a3b9de6979ed4a3ef657c38ee857f458637fa273abfcc00eecb26d423bd"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3c1d7e47eba29f2ead832a43ed97c3f27bde7deb46355cf70c8bc4735647919"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecdc2f0f2d2e43bb3a3aacd3fb91c66f32233ff0f58e135512552fc84780eae5"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"273f141a49e33c03faddeb2733135ffb0e6a25376fbafe5f82c870a53e270152"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"e398fe190d74ddb8072e3381ae916670dbcd5c9b438847bfc29272423de000b7"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f50f071eb8189bfa5ab5cc4104418ccf93ed3a7d8cfde7a658fa97bb3586253"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"5be43cd5a38abf5698a32e79a1418f5519db7dae6ca35a61223c9d8adee8bc42"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3ff2ac8e45403aea59cc94c80787b2e412b5f0b1d4177e8dcd6935ce016e202"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"00ec6c444022bfb7fcfcfe82a45ba86686f3f0d05b268fabd00352f20c39fcee"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"db7df877ead773ef9af9623f03cc59ab85fb7577d05a4e7aa71bce5c0e2c8ddb"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/Data/clsUtil.cs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba7f242bd4c3634036b15d04704490337d75a2f60ca639401279977b48489ec1"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/UI/form_MaxSize.cs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"5421c0ace481e1988258c1c2761c360c2d85075662341a3c082bb72051099424"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ApplySysOrient/UI/form_Orient.cs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae14d55cb6813f18aae6994593fbf5c4680e9a85554c407e4d7700860bbf23c5"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"70dc252bc5b37b8831de976ddda01197dd9a3bdb65500a70a30f3ef2bdaf09e5"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"d15b2642c2de2d20f651e6e9f96e52cc0651bdfe58f6ec9f69261cde63040628"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ExportSharedParameters/Case.ExportSharedParameters/UI/form_Main.cs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"bacc33fd8f973b45722e13290c2e68f7542aed693b7d3aeb07b8a066248ee0e2"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7f76cd4e79dd93173ef398f5e6bfecefaf7500aae632dc3488af0e4e18b79dd"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6a8fceee051cd8d1b547e336051b11260a6007ca58fe4721fa0da23ae46482f"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6bcad2b93b7c52372a860f32c86bff22b8eb64792807137c34822c472a648d6"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"f06ad92e6cb7163f6ed18e079330ff8c2495b6d1e40178671e312a4f01bfac90"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"f813bcffaf27c6a2f4138a56ccb066d786b03c6a5b8d0c28149c6ea0c7481f67"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"1466f771dceedcd43a02a9d1c84812d2d7bf227f86626ae580cd4883794d79e1"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"79e221953195dc27d415c5d5c7b4e630e825160aaba26811ed2fbcb0df9d592b"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"dad22ad8298d9dbb2db43f4ce2d7c18a223927243da55f5abdc8537a7e5e9812"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"510df475ce145f7450f0fe2e7282922fae2f48166938b18e4e82ff0b1a6162ed"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"7475fffbcf16a0912ce0a7b1019b6b66797f62484a240a7297c3bb726ac270fc"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f967176265de337c4321c9cde99e2f3132c74ed04507642fbb7aa3f4233616c"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c0e1b9462875c7a0462da6ae43b86d385afab6d306e719a101e0e235fef9ca3"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ce22cb06b2f6881e18851ba38b0805a92181113f3e30a8ad3196392c35fe716"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b20117c4aadcc52d1cfa4d9578ea977f8131078135e7b356beb446441a78816"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2b4d78d75484d3599315a6def865e6e6f28324abfcf4b17744bca3975d33f64"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"38b984a1a5b5b0c070e674d9071a5afea9e28f96fcef2d89d42498be1f0ff0d3"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"38f6fb416762bad19e5ba2735161b3730b0f7091633a5214ac8b7ab9fe4aeca3"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bf0d44ec89e233bf25948ffb15bbee1c6f06e5efd9159525e1e5ac054534b9b"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7bbd405fb9329d0c97bb8ef8b7dbd9017a1373119766218948fa70ff5316b7b"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"73cab757a07f5b41a7d606e950434a4f224dc3b8725a506a59a155c0f7e21b40"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfa3d6bb9bc6dfd337f42bde8bdd7d78fb730bf07659174bf78dd4d574d41106"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4f3ee4b5f7886a7b05bef2bce59941824243abc2f6c7c9bad85817193e7cd37"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb460b000146303d4402ac3db3e259d701ad9dcad7b4cba91975335a77577aeb"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"62499cc1edfbdf80927210fd797daa33846054f94a7d4f30c1aceba1f17cf809"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cff213c41211fe35ebe292984697633479905ca7915fcc6b03cdfd13ba8083b"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"c48044d9d9c82d589a69c032ad6717e0e2582ae6cd3c5d971639a4a5d102ae35"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"18cd7afbb0c0a2daa36c68c5b520ac7806212073070479cd3608cae72690d88f"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bdff54a18e7930741ae9214a4ee74e88e58ef534b7c66f367f5a5db2e78cd48"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"f935a9d8a9f16861dd62ad0625f9fd89be7a4c5af5179262c2f191e8e58c046a"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.KeyMatcher/Data/clsSettings.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"a630c1a8b231b5fe072eb39af6315bfee8f475a739ad94d1b1fc4ab5f8b56119"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.KeyMatcher/Data/clsSettings.cs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"300e8667a88e052f7b1f3233d8d3520e00e1f3502069671cdc9530f178112d56"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"685e99ab4bf1bfed55c1d7862c3bf689c633ea8987992d2be67ad215aeee21c9"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"e24d2dfcac70aa8229335fa5da12677ff02d0cd6fc8edf68567d6de265671611"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a3893378e41fd48f35288657b19ff54c90caaaecf121e38b7c7a8b1668dfde0"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea76040f99723cab6cb56b5d16bc984cacdc8ae21215edce90d8ec2e99d296dc"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1b5744274388b3684645dccbd0e6db1f4f18e0bd0b1476e0101451e3a6e5a36"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"7720761da1128bbaab66b57b732b537621553f82ce7e618c117e02debc1fe218"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f3d30b1891e08b068c8dd10345faf604c159a74fc265ebb8e1c6a3b2c2ce17e"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"7719c3d152230c958eb5a58568a4cea87eca6b9c70905738efb135e3f12e899e"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c1073155998713751fe27e6913e17542249d3c541ec45a6c4e71cbc2f89c623"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"5aa2fc7fedd5e82f6bb1c0bf6f707626b335335c7f237312f451d4f6549df130"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf99aea62b9875ddb0ac27b964367fc2c059abc68e88ba65027a51fc872b9004"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5731b4117ee1b8b6598e0cc2c5c391ec7daa3dd724594dc9e305ef4637fd8ff"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"6662db1930ec47fc250e8d2f5b1e2204a8c940c9864381c275286674eb5eb576"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"a66410ff91704adb64d5bfe104d80ff2f2f68c080d0f8a8f73bbbef455d8176b"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5caa701ac75dd13bc9641508fff8634b8795a28963b5b5f66c27683e2918532"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"daa53098ddc4f8490eef5e9cd948826ff54b091c11402f46eec1f964c1168f3b"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2015/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"62533ee8ffd2a1451aefdaf5e3c665f2e4fffd0d114eb190e93ad153d647031b"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdf0b1afb608d64e1b0eda050e1ed0096ae3becc9183ae0d1cd7b0a978fa00ec"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"76d613fdc2291dbffcdc554920b9bd32ec0ebcfffb0320a88a3e5f1eedd38055"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"b65d79bb3737fc18dea7a236ea8d8cfdb5bf6bf31ba6c1d5a468e224a2995728"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"660e44e5db14f0d54056776f9e5e2d6098589f416628b9c33bde4187c009221e"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"589e2e29b03b5244689a06f0bfc454fadcc143e1c009a75651919b9bab557b3e"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"50ec65762ac27d666205ab6e0f669118fd8485b6d9d592254ffb69a17244a13a"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec12cb97b687eb26a2d947f91161694e849f0b8fee3a5a4c34af9c6927fd55cf"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca9cb3287c9fab763d8e6c5feb962b4a3334bfc487cfdb7a58ba80f029ea6695"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"7dcd5a087fcaf7fa9829900c7b2de32541b3fc847470281e22d5429aaf2089b1"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"5761ccde867ed5d0f96c56d96dbebc408c9f4a546084b32c340ae1b2b2ba3821"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d9714f0595bbfa2e7059178d12f1f554deb7e27a67bc529465739dbf2dc9489"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"68ce0b9073a3a7cceff517138d5581f98a422680aa4b455e57e28e819dc04de0"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"ded6308fee955432ea070196ce81d0b2404e1f266ebd46c31e6018238cb9de04"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"cea391d1e86152bf867e4f6da0f070d098782c9b6757bb7dd8e96ba23d16bd1b"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"abba5896598e81f9404e7a9d8c9d95611924f6c6097c67486f1a59e37f563653"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"f642a74468e0b2887656685f9810391b387977612a6361fa4ea69de40677d904"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/Data/clsUtil.cs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"dea960893162243d8a7845417f1f3266225d7ada08f880a7cab3566a65f86175"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/UI/form_MaxSize.cs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"44932bd522c3651e02dfd13462a14bc1184b455e0ad80f93b4d2ae91e23a525d"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ApplySysOrient/UI/form_Orient.cs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbca3ce4fdad1f6a031cb821d42e54c0bfc34128488de9af13d07545fd08ba08"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"03a80eaed6cc407717875c3fc1884310c252518a19f0add13e0e782730b59626"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed0bc38261265c41fc1903da30e9da3cb15891068e3e85391eeb81c2a6e8871d"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ExportSharedParameters/Case.ExportSharedParameters/UI/form_Main.cs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"8caa6c086d261959811449c21266892f950cc44707ed7d0deec122c34a253915"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"4371d018f621e4a220aa2bca83021235c44d16271319859b86cbf372929fe3f4"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c47dc50faa39c48a09a272e9d20119eb5f3f8762051def5adcc73917c660be5"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"84396ed3c7d31fd13678f6bf8794a1f83911138fd9a0b81ddb793dba77a98d25"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf096fff27fe15bd8c2073f155589806ff150db30164eb5ac254ac96f49d5432"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"7afb68a12963a802b23eed8dcdc63e6ddfafae6a7ffd6c75900a6015e6b0745b"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae6c8b47232bdcdb14d7459a0f89dfbf18e1e51ecbc701c58f25a40d5e62c38e"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a745ffdcb8690f6ceb640a8509009b283f073f028e1f1fe7ddebace63b51dac"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbac2ad878591a136ecd405f10d3558a8dfb8580bbe0fedc7faba1d8042aa41d"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"605eee45c8ae3da2d8229aa57c067e0f8d27af4fb44b98fe902b22dc5369775e"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b4c53481b97b3646f8862cbd9ea6449d6f096c83e76b657193f9923d94ab530"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"103f8b568035b7379f83780e24540ce4664397831a6f2dd6f4a4c3cfabfc7efb"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9277728c3b9a28d35ee7983d0b9e4a72be94e547b0d04df01178ef285d8ff05"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"e108be8cf47cda9e6011c20edb10c87d94a56b5284855508135ba13c83f56449"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"a650188d1deb35ce3a67198feb48930f92ccb1356b37f488055d262be62f3f75"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"0944442f37548e1416e3153e02a46892cc00c8fad26af2b0e25330a6c001eb5f"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"864932119c4df911f803f050875e317872dc5bbe8b62d20664bb467391ef6c5c"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"324b62734921b11a6959287823ab60f3ed1e1dd104b2940219754cfbccad3e59"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1de6df7dfafa5cdfc777cc9d1798e4d4ef8debf72334024e42dc8fc9d544c0a"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"42565f324fdf7f4184a15057dbd0d67493301ceed58f590d686e4ace2fa365d4"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f95d316e505d858bd13ff36be22b824a270a2fbf8bf82b44102f93157defd5c"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"b11c976c2984584fa6b25457d3c42eb6e5bf6d1383ca88caa066101634856fe4"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"75ddda4f06cb5236a4503717743a24dc474edb8961867f71fd159c5e121a6229"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd024ff67f4d63d0e5ad47c5666d758bd667f605b7eb5635b6d082cc85642709"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"a094f655e05bd245dc4b697989ae8d9673c74a7f2b29903beac9406e6b12b5de"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"13c6cf53666df2949000cf4ab560470053c53a5d1abd9f758b79507717ec4d20"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b3bd58928ad2de8eb953335eab2bfc80226c22a1d71b56a761d5f0bd6326c18"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"faa54b6382cb07cde010caad798d1b707959a46f5e1fc16f8efe519cbb6962d9"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"222b4ee9b9b94e9dda606e781b50da9733bcbb6559eec6ff52c583158dd60a0c"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e02864e97302668a4a26cee44dbf4c86990f421d65590f46102a73574f9fd8e"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.KeyMatcher/Data/clsSettings.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fb40d42433d8ef8812a5ddf12b043f276238a94382471b9f016748e7058323d"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.KeyMatcher/Data/clsSettings.cs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d46883b5cd40f458fc0fd8e8a864773bccd139fa005e93f1491c148cc7af954"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"d83868169dc4a22604b86249264d5aef69d82260ad542fe65a9e2e27c03421b6"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf1d58e965f26f33b0f0c6ccea39b2829758532fab8b08ec0ac3b8d7285c343c"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c1f881bf2e5b694bb8af5cb22e3e01b44d92990ff73140978179170c952ceeb"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0e0d3c75bc19c03f7daa6329dc7c4db5a02c67f8357d55fe3cb8a768406f162"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bfb1f390184ca780be2c18567ed220f321f42b08ea3a978f2f68fec43f6336f"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"15c1a34252561a53f3d04392558d77c448e2ed7c90e3fad46b1a8be11a3f7c0a"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"436c41e73cfd063bf782f3438dba9a14af6d0fb896d57451af388e7e987dd949"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"1da6f651ed593e4113979309740da1dccd84bbc87a24ee87ff653fd2975d48ee"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"96a4e242d3ffa6b7f0d698f4e3ef7565cbbd5bac9b7054ba8af5572b125b4a3f"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"790ebceaba2d1371d8f4e48ddb2162c904c3c6550c29865f75031a6417d80dcc"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"71ec290d02430903e63d81efffbc88c09b7bc4d6569d30f6bd3185eadfb27430"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"76cdf0c7cba5b00f30e52fa7e6a9854455748af07fe56d4f16296174ac8152d6"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"aedf934eacf6817c63cf850ee66d0939b6191cbe4577311b506a323fd3eba31f"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a1511547d2b0a91df1ddcb6af4dcd189c13e65435bc560d537ceba156c735e6"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e799b36ae98fdb539e8e27c21c27f24c06b45b196857672c21554daaeffbcda"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd5a7fa9e13402ee501e77e8a13ee7ef6bc13fe012f0ea2c594a27766df86335"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2016/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac321fb8eb878933d4e36a0048bb0ac955fdc4d5f3a3b5e3b3ee83fba5d5dbbe"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"00ed0db589229c863c61bfd43d027633ea7f1721413c84bd6ed25e6852df46ba"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecf659d347eefc3e289f64a64f3703ed553a90fb94382847e805bcc2674157d3"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"6822d69a0584d40a41ea4c0b5ee8ab909f6bc96ae3fd0c03c0e5f0e4630d4021"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"90495320702c1f738f90dfb71bdda8572d1865cc82b5ffcb27b6b583fb6dabd7"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"a62ff3e0552512f145f5df2058a5a3cdd609a27a9f9705d2acc0b5963c5950cf"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"92105c0f87a8231ad9562bf95af850288d7e21d48b71ed0dcbbe6d32702436ca"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"05f5d5c6ec6367f54fe4f9f329136af0f7744398f2d9de30190ea45237f066ba"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec58e9cb9f02dda88df8d9df8b9dcfdc58f3c057f8201456289d279318f5fa4e"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"51ed7f1ac59c07065cecd9fe0c7b701b549a5d3f02f3a721cde68cebe7c77306"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"7486f8a02a7a03d9fba385b7d004b96afd288e01c858e070e8e34d87499df118"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf1e7ca612e82748687a89d54ce22d22558c2ba2e05ca2c0b08760cae3662920"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"51f7607b58c45b6f4deca1712f67ac346feff71995a4b824d6d64405cce13565"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"e824fdec93c04df57c1d0c0470acac92f83abd8cdbde8da0dca23b74cbc38ee5"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8c04989c5cc49a65e0f05568fc53c6862a9be1783918553e9cb7ab5aa85711f"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"b50d65629e73de15eb72dad51d02795844375b935c9d22059d2ce68026139921"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"4417b8144f1e26d09df873e579f25fc8e06cc5aaf265421efa8a0074b0647506"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/Data/clsUtil.cs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"0abae205408b81ea0dd7604495e35f1e9db4198a53287b491fe441f7aff6c894"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/UI/form_MaxSize.cs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"80f7ea057df19acd54b3292306acf49343dc1a282d3da44cff1db030d1a0586d"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ApplySysOrient/UI/form_Orient.cs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e431806c02dd46659d8ea9fe3fb2a12913a50038ffd0bbcf3b3d8519df23dc1"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"107d9a2b77a0346a6b38d7a527d78d4d3220b2a3b31a029524e017be8ad6c69b"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"90b802397773a99fccb5ac5d801276de0479c9d60ba9b91782aee2f7fd300c7b"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ExportSharedParameters/Case.ExportSharedParameters/UI/form_Main.cs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ce60182a949daec05f0774443f34a4f3e59719b11ea9bc2ab14aa8ac3f339bc"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"f955e04869341b1e7f7f20a84c70bbc26134067d43f26ab27ef0029f900d64f3"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"87d41f91a0e21762bc9a3a4d1296eede9d97224a846e5b8c47ed2a438fda6e0d"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ReportGroupsByView/Case.ReportGroupsByView/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5326c4d9e99cc13761c9964d6ae2cab08c22f1d51239f30d0665cd28d95f97c"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c4f1fa9cb6097d6ba842169caff8d5190e07d7087e5a1a394766136db077ffe"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd7ce1a429ed4340f704c571c97f4744db5d2787901b17d6dd76a9a280d6dcd7"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f6f134310d487f06c4ffcfe5e7c6d5035a12f69a46c631019372bc7034f1fca"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d3d6ef79d74071c45c7abfe44abec59fe156cc80158a27b99f9e1af0b277756"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f195859418f104a1604d17a37d1637ebf012e47be736f4d07bb1bf621095ba6"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffb57a1f349fe0642b5b61e772083792e984428fd82bb4c1a2475ba92e8e07f3"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf255af2a556cb42e4ddf1689e7cb0e84433d545c68bf3c55608f7dcd45af56c"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7f8efc6fd95577f32b3b462f98b4aa6d135c68ce2507fb5228b04456e1ecc45"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"af0cc7fce2951563c6dd7abc76465e7190083b2269f538f9d385f79e98f17da5"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"b91674fe9c9dacb5c6bd3ed21cbc12df7007e6a2103f4b0f1663244a4cde0ef1"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"1767843bb5b143658deb6fe269c24f3ed22e7201769e9c928b56a444e68943ed"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc5caa28cfe3dcf694f8d5d554c9e41e1b7c28f6630475dc17d0b4e173de8c0e"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewCreator/Case.ViewCreator/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"192b2fa09293538df4191b9a6403b435b658e7f659173fa4f5c93eb8a2cdf797"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"745fa4d6d8639eebd69632a8975a0bb2aa6b1f950947839833d1e05e8fd473f2"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"c335831521e9d124af39bc983d32dcbfc9f678f93f2d8dce26ff5ec1686631b1"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"a19ead3d53f5734e37cb3c7719883eca3b8f6525f283d61a17b414a33940968c"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"7098bd0b8f0031ae9c26a3d03eb6fd0c0c0c1bda0b8862b9e56818664dab4420"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"cab4d28c65462246ab4e7c48b18afda1ba7efd5dce57fa0ea2bb8a046cfea06b"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"99e3d1f3f46b9e2ab1e760b887730d9f2791fed783e0e36dfc620ce9613fe624"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ObjectStyles/Case.ObjectStyles/API/clsAPI.cs"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"c409972a0ec6892c12c241230a237e5f15d5490908ce560861b8ca36f7c00306"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"477205264d1232773fdfae412370b51d8a2e1c5757166c90669f69b4648125a2"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3b4c1e83990b4e011e2cacc1ed53227778f8dbe8dd95f5fbbd5a8af2b3170e5"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.FamilySubcategories/Case.FamilySubcategories/API/clsAPI.cs"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"fac9e002b363c9b65c1151c9b14600b9215dd9cb6f5f0272b847ac515117bdca"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"a160d929dcd4b55eda53e64a09c6332ab9f5f4edb8643377d944cb16754c33b7"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6f7c59bdec0b25b983cf4fed0b8a960ad4d76e907bfd4e58eb8225b89848c71"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.ParallelWalls/Case.ParallelWalls/API/clsAPI.cs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"d65425848bdc94e91dfa0f761ea22978ddce5906445972b637938e791f94d748"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.KeyMatcher/Data/clsSettings.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"645994ebbd1b629dcb7eda5703452eb9b6414b7414c99274be8d24c6fb8093db"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.KeyMatcher/Data/clsSettings.cs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"8aaad895bcf7faa3d5733a8f85c6b6b2fbb4319c38871c4adb9410d16bb0438b"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"e37306805624eee011adf9a91f0fad695d296bf33ce37cfa02f2f339dff17ac6"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3e154394157ad068ac489796b5d25f7c5cc6f56928fed81da65b9d1d78511eb"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"c09d3db6518d516dfcc0f2fbeb15fd60d76d92dc8ae9aad300920eded70ec53b"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d448e2db113f62f456a32fbd26bf055c62dd84b56a8a42e7918c4c0cef2f4f2"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b5c354e3c797aace40840546d24ebccc4b2399d73af6bd2804ec98f8a033729"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"afb1603fbd02b8c98a50398e7280eab5bd16fb4648e9c8aabfe758c20e70835a"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DimensionOverrides/Case.DimensionOverrides/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"263d578b3f137b49b0320f2dbc534d0eed8d39259d857e462e632431febdc7c8"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"51bc7dadab578ff60ba86c0c0becec6d3e1fcb88d1a90254643d035770bcfae6"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"71b3f9844d138fae61ba5f0b36bc9ace3b1a6654b3781fcc219d4c2abd1ccda2"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"24632945cb7c7fe79810d6fe26f0af05914ca3c45f82261dd29b6c0f5ed89a13"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.UngroupAll/Case.UngroupAll/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff9c85bb14bc1ff271f4bbfd5cefb8ffba609d9aa017def87b70e957543089e1"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8bc541014d714015390d48d711c1780956d6c6284da10d0da9f889ee953dde5"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"99267135022879db623a6cdc57983f59f55a398c36df0d419501eaf7f3325cce"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"15894bd87aa752abdf0a568507f254695caf0a6fbc10a7464bbb73ae5d6a8c9e"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0c7249f05be3c13563bc957a3c4405753ad6c78a94f9a18496d56bce8f689cc"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"40d32f50c83d0e15db425a860150ec67d4cf97ca5415747426387a3ce2f7506e"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2017/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"d36e9611b3b4b448aaadac9b6dd6fb5a185d13f867e54e841d897ef9dd817b47"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c214b7a3559e276fd180cbd218e55d324d3150f2add23f5adaf5819ef505097"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"587c6f7c2ce7f836d9666ad16804cb026b78a56923b513132fc501223d994e8b"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/API/clsAPI.cs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"b17e18c1e6d15a2135c2643b615e6bdeaad631e3332308946f8adec0a3e69415"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"42141c8bbfeff27d13d2c2ad272d94237cab2e3b717c9fe5d8649f1a49b490ce"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b4729bb0a9e2f3ca07788fb375f458418d95485a3a32f6430af2bb84ca4a8d0"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"36e0a713a83ccc82d42e9a9b28350d303836a607a8ffd42a56c6dd7ed8605396"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"66e2132bf8451722c2fea978c84317b56c99f85f0d09fccd8a683ec82c198fa5"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bec339627ba3e4ecfe0838d94789e1c04938ddebedc527c4265c005a891c7e5"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"a35480d934be1c35701a68c5722607b1575a90cbe347e538b66423c4f0be2404"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"20837034a75919b832920fb8820159729d9a7deccfb11e0f6a6ca799946cf54d"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5ba749583deb0ed2a0f4700d41555a42c2c201a37e7ca0bff1c990f329adc40"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"74fd5d58b8a47e939bf28e4246ac483403ed2e2e8e5da5ebd649a693a7c6f822"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"616b26cc9d21b9af20ff3dc01c3b410d6e9031a7dec74341d301e89d648d76de"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"66f8ac45a7e7227be85067e1384e33ec7a770626b082c83ea893181e206c3905"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf22154f9bb08ec8845f7589cefbd5a43ecfd56e55e21051506998febaba867d"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/Data/clsSettings.cs"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"b90f270e43c7b643266d5c9b2f7e1a71987542d436945279a7f0ad54d8118791"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/Data/clsUtil.cs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"45e2ae5c2b894cd0bcb07c8048c7db517520f87ee85b49cecac89808ada72161"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/UI/form_MaxSize.cs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"1417a4503a70992b4479a97e23ab397dcf3ff3968d46b68eae8c7d8bc6356632"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ApplySysOrient/UI/form_Orient.cs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"af836ceeab72e49ced2e05073f7a0929fcea0723aff6a61407b9c52b78c0a620"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"afa8e258305d082ab1478f662a1552c733fa20f4aaeb350923dba1a8764db275"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExportSharedParameters/Case.ExportSharedParameters/Classes/Entry/cmd.cs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"156bd0eb29213c657d41c0b05e178cfcd30be714ba6844ec943507746e635198"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ExportSharedParameters/Case.ExportSharedParameters/UI/form_Main.cs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"550df3a330be0f92633fb5536f5153fada7da87683b33f9de32a3ea1b694b953"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"5266c256e206b00552b0f6dd231357287515cffa051b6a4a04d9303dc3ed9c9c"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b2885fd226341effbc8d394ccd6366289132545a2f4248e29449f6b10975c35"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cd2ee229ca8dc31c153ccb641286ffb3a8f8149e6fa8a58d7adfeb9c84cf181"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c02555b0f68e15fcfc05ffa0327301ae7577a63000f74f237a3876bfc997523"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"4aabae2c223ff200e5dc5497681b992a0e20fd6da4533f744087c9784c4a3e5c"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ReportGroupsByView/Case.ReportGroupsByView/Data/clsSettings.cs"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"74809e586347ea8ecc19f695ab7d5a8d8080e6ef2363134c04779c1b5ff064ff"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"05c1d05cf94cf08812ce426cd427052dd8f82f700c3347e2f5832f816adef1ef"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2188d0a54a9b883675579784cf4bebc86695a0f50b948a3b3eb0d372b35fd78"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"3260af4c1ad2ae45b5af02bf8f00d8f4d2fc58a13a63c8a171d22950d7ade335"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ReportGroupsByView/Case.ReportGroupsByView/UI/form_Main.cs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6811c522475d8c57ee5ffab53e3319679706036793fe26d9231eea2fcb29fd0"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"78ee7ca78a54ddd67e7d07d8c3cf4e9dd685569ab6cfd13c779ee70c65a95aa4"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ViewCreator/Case.ViewCreator/Classes/Entry/app.cs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"7dce7fc8e427734211a82852de3902030dc968c6485dd93f73de7c8604167a80"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.ViewCreator/Case.ViewCreator/Forms/form_Main.cs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"e344b1590d4822a384c6af0da85072cbd1772fd30c008adfdef9c9b1ce6d4173"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.KeyMatcher/Data/clsSettings.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a6f15afd941a6eb592491a4ee213678c2078f73f63f217b98faac6a84330cdb"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.KeyMatcher/Data/clsSettings.cs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a90f3230f313ac16546ada5fd13168156351c00cef6756ddb3123f0b2c86a69"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"b908b2417a4eb3a8354f3e65fe4ace4adbe443a78b0afee646aa4c2b44eb4073"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ec63226ecb960e6bdd853357aaf4828c3e85324c07c48a53fe3cfdd0cc83c88"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"efe44331869cfd069288a9ce34078cfe2abe3c481e9e490ac9989e1a66d17e34"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Subs.KeyMatcher/Utility/clsGlobals.cs"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"55bd83b834796ae154a330254d51ae37ee256f0015359cb1592eecbca367065f"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.DimensionOverrides/Case.DimensionOverrides/UI/form_Main.cs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"b70fe206773073f02102bc7ee29ae4e51c6c7ebe82fb4c696bc8077ab5cd7d78"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"ade74dc619860dc317cd5506d6987809ed1bcabbda7dfbfed9c663378e94d5b8"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"f82bbffee85704940448840169011e1004dac280a2c77b67d2da4cdd31ae1f34"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.UngroupAll/Case.UngroupAll/Data/clsSettings.cs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"f20b5a7b82f487c07b737639866020bd7a7812a08f7b61c823c1bb53e363e53e"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"80af4e0bf9f3d75ebc1afbf57dfee108dac6acf390d0f8dc339bdb5babb2325c"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d8fd6cf69f12d06dedfde705dd570cf53e1d2681b97ad03e8148bca9047580e"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.UngroupAll/Case.UngroupAll/UI/form_Main.cs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"633db2721601f9109ca8e844e7f8fb2b9000ea77fd69a6811dfa604441f6fdf7"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"2018/Case.Navis2BCF/Case.Navis2BCF/Navis2BCFWin.xaml.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff6729daafb8e93f57bdc10d6fe130a929d0b0e28ff731edb1527b48c581f91d"}}],"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-1395","guid":"800e09e7-c11a-8654-9fa6-86f398995fed","name":"Dependency on Vulnerable Third-Party Component","shortDescription":{"text":"Dependency on Vulnerable Third-Party Component"},"helpUri":"https://cwe.mitre.org/data/definitions/1395.html"},{"id":"CWE-259","guid":"ae9ad959-fbb6-9d5e-892d-3dca66da0b69","name":"Use of Hard-coded Password","shortDescription":{"text":"Use of Hard-coded Password"},"helpUri":"https://cwe.mitre.org/data/definitions/259.html"},{"id":"CWE-319","guid":"7af97476-9f0d-4458-9163-3d2043918a1a","name":"Cleartext Transmission of Sensitive Information","shortDescription":{"text":"Cleartext Transmission of Sensitive Information"},"helpUri":"https://cwe.mitre.org/data/definitions/319.html"},{"id":"CWE-506","guid":"401d6455-56e3-0552-9a39-f77461673e3f","name":"Embedded Malicious Code","shortDescription":{"text":"Embedded Malicious Code"},"helpUri":"https://cwe.mitre.org/data/definitions/506.html"},{"id":"CWE-77","guid":"332c8ade-6612-9f56-a06b-d8d90b1a8750","name":"Improper Neutralization of Special Elements used in a Command (\u0027Command Injection\u0027)","shortDescription":{"text":"Improper Neutralization of Special Elements used in a Command (\u0027Command Injection\u0027)"},"helpUri":"https://cwe.mitre.org/data/definitions/77.html"},{"id":"CWE-78","guid":"2e31ceaf-c7ae-2e5e-9661-cfb1362789cf","name":"Improper Neutralization of Special Elements used in an OS Command (\u0027OS Command Injection\u0027)","shortDescription":{"text":"Improper Neutralization of Special Elements used in an OS Command (\u0027OS Command Injection\u0027)"},"helpUri":"https://cwe.mitre.org/data/definitions/78.html"},{"id":"CWE-79","guid":"fd45580b-e8c4-fc5e-8c2f-aa8fab0b4dbf","name":"Improper Neutralization of Input During Web Page Generation (\u0027Cross-site Scripting\u0027)","shortDescription":{"text":"Improper Neutralization of Input During Web Page Generation (\u0027Cross-site Scripting\u0027)"},"helpUri":"https://cwe.mitre.org/data/definitions/79.html"},{"id":"CWE-798","guid":"5e8f057d-fee3-995a-a0cb-9fc5b0d174d1","name":"Use of Hard-coded Credentials","shortDescription":{"text":"Use of Hard-coded Credentials"},"helpUri":"https://cwe.mitre.org/data/definitions/798.html"},{"id":"CWE-89","guid":"6d08fdad-37eb-c150-bbf0-d7d946863407","name":"Improper Neutralization of Special Elements used in an SQL Command (\u0027SQL Injection\u0027)","shortDescription":{"text":"Improper Neutralization of Special Elements used in an SQL Command (\u0027SQL Injection\u0027)"},"helpUri":"https://cwe.mitre.org/data/definitions/89.html"},{"id":"CWE-937","guid":"16f316ae-415c-b354-a59b-1f7905f756e9","name":"Using Components with Known Vulnerabilities","shortDescription":{"text":"Using Components with Known Vulnerabilities"},"helpUri":"https://cwe.mitre.org/data/definitions/937.html"},{"id":"CWE-94","guid":"75e7f50c-6c2f-dd52-bf40-bf6c52b861fd","name":"Improper Control of Generation of Code (\u0027Code Injection\u0027)","shortDescription":{"text":"Improper Control of Generation of Code (\u0027Code Injection\u0027)"},"helpUri":"https://cwe.mitre.org/data/definitions/94.html"}]},{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61","version":"2025","organization":"OWASP Foundation","informationUri":"https://top10.owasp.org/2025/","isComprehensive":false,"shortDescription":{"text":"The OWASP Top 10:2025 web application security risks."},"taxa":[{"id":"A03:2025","guid":"168e227c-7735-2e57-bc6e-997affe644c5","name":"Software Supply Chain Failures","shortDescription":{"text":"Software Supply Chain Failures"},"helpUri":"https://top10.owasp.org/2025/A03_2025-Software_Supply_Chain_Failures/"},{"id":"A04:2025","guid":"6a9f5bfd-1a56-6453-beec-a7eff0ba3007","name":"Cryptographic Failures","shortDescription":{"text":"Cryptographic Failures"},"helpUri":"https://top10.owasp.org/2025/A04_2025-Cryptographic_Failures/"},{"id":"A05:2025","guid":"87e86033-3231-8458-8e4a-5cb82743553a","name":"Injection","shortDescription":{"text":"Injection"},"helpUri":"https://top10.owasp.org/2025/A05_2025-Injection/"},{"id":"A07:2025","guid":"334ddd78-539d-d35c-83dd-253647eb7eaf","name":"Authentication Failures","shortDescription":{"text":"Authentication Failures"},"helpUri":"https://top10.owasp.org/2025/A07_2025-Authentication_Failures/"},{"id":"A08:2025","guid":"84b0c297-710e-9a5f-9335-936ecb260c36","name":"Software or Data Integrity Failures","shortDescription":{"text":"Software or Data Integrity Failures"},"helpUri":"https://top10.owasp.org/2025/A08_2025-Software_or_Data_Integrity_Failures/"}]}],"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":169,"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."]}]}